0
votes

Inversion des valeurs de variable dans R

J'ai vu diverses questions posées sur le recodage des variables (par exemple Recodage des variables avec R ) mais je me demandais s'il y avait un moyen simple de «retourner» complètement les données. Je travaille actuellement avec une variable x qui a une valeur de 0 à 30 qui compte le nombre de jours qu'un patient n'a PAS passé en USI. Ce que je veux, c'est le nombre de jours passés à l'USI, c'est-à-dire que si quelqu'un n'a pas passé une seule journée à l'USI, il aura une valeur x = 30 mais je veux une valeur x = 0 et ainsi de suite. Évidemment, je pourrais recoder chaque valeur individuellement, mais dans l'intérêt de sauvegarder les touches et d'en apprendre un peu plus sur R, je me demandais s'il y avait une solution simple.


1 commentaires

prenez juste 30 - le nombre de jours: 30- (1:30)


3 Réponses :


0
votes

L'addition et la soustraction dans R sont vectorisées. Cela signifie que vous pouvez appliquer une fonction à un vecteur et il renverra un vecteur, plutôt que d'avoir à boucler sur le vecteur.

set.seed(999)
ICU = sample(30) ## number of days in ICU
not_ICU = 30 - ICU ## returns number of days not in ICU

Est-ce que cela aide?


0 commentaires

0
votes

en utilisant la soustraction:

x<-0:30
y<-30-x


1 commentaires

simple mais élégant. je l'aime bien



2
votes

Vous pouvez simplement inverser les données en utilisant (x - max (x)) * -1) + min (x)

( icu <- seq(-1,1,0.1) )
  inv(icu)

La raison n'est pas simplement en soustrayant, cela fonctionne également sur les vecteurs avec des valeurs négatives.

inv <- function(x){ ((x - max(x)) * -1) + min(x) }
  icu <- 0:30
    inv(icu)


1 commentaires

Je vois que c'est une meilleure solution puisque cela fonctionne en général. Merci.