如何将随机的“NA”添加到数据帧中 [英] How do I add random `NA`s into a data frame
本文介绍了如何将随机的“NA”添加到数据帧中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个带有随机值的数据框。
I created a data frame with random values
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 值来模拟真实世界的数据。我试图使用申请
但不能到达那里。线条
and would like to introduce a few NA
values to simulate real world data. I am trying to use apply
but cannot get there. The line
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
。在中也尝试了与
和。
will not set them to NA
. Have tried with
and within
, too.
强力作用:
for (i in (1:floor(n/10))) {
df[sample(c(1:n), 1), sample(c(2:ncol(df)), 1)] <- NA
}
但是我更喜欢使用 apply
family。
But I'd prefer to use the apply
family.
推荐答案
Apply返回数组,从而将所有列转换为相同类型。您可以使用此方法:
Apply returns an array, thereby converting all columns to the same type. You could use this instead:
df[,-1] <- do.call(cbind.data.frame,
lapply(df[,-1], function(x) {
x[sample(c(1:n),floor(n/10))]<-NA
x
})
)
或使用
loop:
for (i in seq_along(df[,-1])+1) {
is.na(df[sample(seq_len(n), floor(n/10)),i]) <- TRUE
}
这篇关于如何将随机的“NA”添加到数据帧中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文