我有一个完整的数据框架.我希望数据帧中20%的值被NA替换,以模拟随机丢失的数据.
A <- c(1:10)
B <- c(11:20)
C <- c(21:30)
df<- data.frame(A,B,C)
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一个快速的方法吗?
我用随机值创建了一个数据框
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))
)
Run Code Online (Sandbox Code Playgroud)
并想介绍一些NA值来模拟真实世界的数据.我试图使用,apply但无法到达那里.这条线
apply(subset(df,select=-id), 2, function(x) {x[sample(c(1:n),floor(n/10))]})
Run Code Online (Sandbox Code Playgroud)
将检索随机值,但是
apply(subset(df,select=-id), 2, function(x) {x[sample(c(1:n),floor(n/10))]<-NA})
Run Code Online (Sandbox Code Playgroud)
不会将它们设置为NA.是否尝试过with和within,太.
蛮力工作:
for (i in (1:floor(n/10))) {
df[sample(c(1:n), 1), sample(c(2:ncol(df)), 1)] <- NA
}
Run Code Online (Sandbox Code Playgroud)
但我更愿意使用这个apply家庭.