Waarden vervangen van een kolom met een voorwaarde in R

Ik heb een heel eenvoudig Rvraag, maar ik heb het moeilijk om het juiste antwoord te krijgen. Ik heb een gegevensframe dat er als volgt uitziet:

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)

Wat ik zou willen om alle rijen te selecteren en te vervangen waar depth < 10(bijvoorbeeld) met nul, maar ik wil alle informatie behouden die is gekoppeld aan die rijen en de originele afmetingen van het gegevensframe.

Ik heb het volgende proberen, maar dit werkt niet.

df[df$depth<10]<-0

Alle suggesties?


Antwoord 1, Autoriteit 100%

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

(Voor de kolommen die factoren zijn, kunt u alleen waarden toewijzen die factorniveaus zijn. Als u een waarde wilt toewijzen die momenteel geen factorniveau was, zou u eerst het extra niveau moeten maken:

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

Antwoord 2, Autoriteit 8%

Ik arriveerde hier vanaf een Google-zoekopdracht, omdat mijn andere code ‘opgeruimd’ is, dus het verlaten van de ‘Tidy’-manier voor iedereen die het anders kan vinden

library(dplyr)
iris %>% 
  mutate(Species = ifelse(as.character(Species) == "virginica", "newValue", as.character(Species)))

Other episodes