Skip to main content
 首页 » 编程设计

使用 R 中的条件替换列中的值

2024年06月20日48mengfanrong

我有一个非常基本的R问题,但我很难找到正确的答案。我有一个如下所示的数据框:

species <- "ABC" 
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) 

我希望它选择并替换 depth < 10 所在的所有行(例如)为零,但我想保留与这些行相关的所有信息以及数据框的原始尺寸。

我尝试了以下方法,但这不起作用。

df[df$depth<10] <- 0  

有什么建议吗?

请您参考如下方法:

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

(对于作为因素的列,您只能分配属于因素级别的值。如果您想要分配当前不是因素级别的值,则需要先创建附加级别:

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