我有一个非常基本的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"