【发布时间】:2014-01-19 07:38:26
【问题描述】:
我用随机值创建了一个数据框
n <- 50
df <- data.frame(id = seq (1:n),
age = sample(c(20:90), n, rep = TRUE),
sex = sample(c("m", "f"), n, rep = TRUE, prob = c(0.55, 0.45))
)
并想介绍一些NA 值来模拟真实世界的数据。我正在尝试使用apply,但无法到达那里。线
apply(subset(df,select=-id), 2, function(x) {x[sample(c(1:n),floor(n/10))]})
可以检索随机值,但是
apply(subset(df,select=-id), 2, function(x) {x[sample(c(1:n),floor(n/10))]<-NA})
不会将它们设置为NA。也尝试过with 和within。
蛮力有效:
for (i in (1:floor(n/10))) {
df[sample(c(1:n), 1), sample(c(2:ncol(df)), 1)] <- NA
}
但我更喜欢使用apply 系列。
【问题讨论】: