【发布时间】:2017-05-16 14:42:38
【问题描述】:
我想用该列的中值更新数值列中的 NA。
dt <- data.table(
name = c("A","B","C","D","E"),
sex = c("M","F",NA,"F","M"),
age = c(1,2,3,NA,4),
height = c(178.1, 162.1, NA, 169.5, 172.3)
)
提取数字列
num.cols <- sapply(dt, is.numeric)
num.cols <- names(num.cols)[num.cols]
检查值
median(dt[,age], na.rm = T) # 2.5
median(dt[,height], na.rm = T) #170.9
对每个 num.cols 使用 lapply
dt[,lapply(.SD, function(value)
ifelse(is.na(value), median(value, na.rm=TRUE), value)),
.SDcols = num.cols]
问题,我无法弄清楚如何用 data.table 语法中的估算中位数向量覆盖带有 NA 的向量?
【问题讨论】:
-
你快到了,要覆盖你想要的列,只需在
lapply之前使用(num.cols) := -
@MikeH。谢谢,我不知道我是怎么错过的。
标签: r data.table lapply