use*_*688 45 r conditional-statements dataframe
我有一个非常基本的R问题,但我很难找到正确的答案.我有一个如下所示的数据框:
Run Code Online (Sandbox Code Playgroud)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)
我希望它选择并将深度<10(例如)的所有行替换为零,但我希望保留与这些行相关的所有信息以及数据框的原始尺寸.
我尝试了以下但这不起作用.
Run Code Online (Sandbox Code Playgroud)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)
有什么建议?
Mat*_*agg 83
# reassign depth values under 10 to zero
df$depth[df$depth<10] <- 0
Run Code Online (Sandbox Code Playgroud)
(对于作为因子的列,您只能分配作为因子级别的值.如果要分配当前不是因子级别的值,则需要首先创建附加级别:
levels(df$species) <- c(levels(df$species), "unknown")
df$species[df$depth<10] <- "unknown"
Run Code Online (Sandbox Code Playgroud)
我是从谷歌搜索到这里的,因为我的其他代码是“整洁的”,所以将“整洁”的方式留给其他可能觉得有用的人
library(dplyr)
iris %>%
mutate(Species = ifelse(as.character(Species) == "virginica", "newValue", as.character(Species)))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
169328 次 |
最近记录: |