Replacing values from a column using a condition in R

杀马特。学长 韩版系。学妹 提交于 2019-11-26 12:10:52

问题


I have a very basic R question but I am having a hard time trying to get the right answer. I have a data frame that looks like this:

 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)

What I would like it to select AND replace all the rows where depth < 10 (for example) with zero, but I want to keep all the information associated to those rows and the original dimensions of the data frame.

I have try the following but this does not work.

df[df$depth<10]<-0

Any suggestions?


回答1:


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

(For the columns that are factors, you can only assign values that are factor levels. If you wanted to assign a value that wasn't currently a factor level, you would need to create the additional level first:

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


来源:https://stackoverflow.com/questions/13871614/replacing-values-from-a-column-using-a-condition-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!