web-dev-qa-db-fra.com

Remplacement des valeurs d'une colonne à l'aide d'une condition dans R

J'ai une question très basique R mais j'ai de la difficulté à obtenir la bonne réponse. J'ai un cadre de données qui ressemble à ceci:

 ind<-rep(1:4,each=24)
 hour<-rep(seq(0,23,by=1),4)
 depth<-runif(length(ind),1,50)

 df<-data.frame(cbind(species,ind,hour,depth))
 df$depth<-as.numeric(df$depth)

Ce que je voudrais qu'il sélectionne ET remplace toutes les lignes où depth < 10 (par exemple) avec zéro, mais je souhaite conserver toutes les informations associées à ces lignes et aux dimensions d'origine du bloc de données.

J'ai essayé ce qui suit mais cela ne fonctionne pas.

df[df$depth<10]<-0

Aucune suggestion?

44
user1626688
# reassign depth values under 10 to zero
df$depth[df$depth<10] <- 0

(Pour les colonnes qui sont des facteurs, vous pouvez uniquement affecter des valeurs qui sont des niveaux de facteur. Si vous souhaitez affecter une valeur qui n'était pas actuellement un niveau de facteur, vous devez d'abord créer le niveau supplémentaire:

levels(df$species) <- c(levels(df$species), "unknown") 
df$species[df$depth<10]  <- "unknown" 
82
MattBagg