我想产生类似的东西densityplot()从lattice package,采用ggplot2使用多个归集与后mice封装.这是一个可重复的例子:
require(mice)
dt <- nhanes
impute <- mice(dt, seed = 23109)
x11()
densityplot(impute)
Run Code Online (Sandbox Code Playgroud)
哪个产生:

我想对输出有更多的控制(我也将它用作ggplot的学习练习).所以,对于bmi变量,我试过这个:
bar <- NULL
for (i in 1:impute$m) {
foo <- complete(impute,i)
foo$imp <- rep(i,nrow(foo))
foo$col <- rep("#000000",nrow(foo))
bar <- rbind(bar,foo)
}
imp <-rep(0,nrow(impute$data))
col <- rep("#D55E00", nrow(impute$data))
bar <- rbind(bar,cbind(impute$data,imp,col))
bar$imp <- as.factor(bar$imp)
x11()
ggplot(bar, aes(x=bmi, group=imp, colour=col)) + geom_density()
+ scale_fill_manual(labels=c("Observed", "Imputed"))
Run Code Online (Sandbox Code Playgroud)
产生这个:

所以它有几个问题:
invalid argument to unary operator而且,用一行完成的工作似乎做了很多工作 …
我有一个数据框,每行是关于瞳孔的观察.数据框中的一个向量是学校的id.我已经获得了一个新的载体,每个学校的计数如下:
tbsch <- table(dt$school)
Run Code Online (Sandbox Code Playgroud)
现在我想将相关的计数值添加到每一行dt.我已经使用for()循环遍历每一行dt并创建一个包含相关计数的新向量并最终使用cbind()它来添加它dt,但我认为这是非常低效的.有这么聪明/简单的方法吗?
我想拿一个矢量,例如:
X <- c(1,2,3,-1,-2,-3)
Run Code Online (Sandbox Code Playgroud)
并将1(或任何其他预先确定的数字)添加到值为负的条目中,以生成
1,2,3,0,-1,-2
Run Code Online (Sandbox Code Playgroud)
有没有一个光滑的方式来做到这一点?
我正在尝试sample(),但每当我使用自定义概率时,它会不断显示"不正确的概率"
我已经尝试过几乎所有东西,但仍然卡住了.请指导我做错了什么..
码:
sample(10:50,4,replace = T,prob = c(.1,.2,.3,.4))
Run Code Online (Sandbox Code Playgroud)
sample.int中的错误(长度(x),大小,替换,概率):
概率数不正确
我有一个数据集,其中数据检查显示以下一些,所有这些都应该丢失
'missing'
'unknown'
'uncoded'
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为我可以用"NA"替换所有出现的这些?这是首选方式吗?
var[var=='missing'] <- NA
var[var=='unknown'] <- NA
var[var=='uncoded'] <- NA
Run Code Online (Sandbox Code Playgroud) 我正在使用该mice包来获取完整的数据。我认为问题在于我没有对所有数据进行插补,因此其中一些数据具有 NA。(一些缺失数据的变量只是用来预测其他变量的缺失,所以我不想估算这些变量。
我可以用这段代码重复这个问题:
require(mice)
impute <- mice(
nhanes,
imputationMethod = c(
"", # age
"pmm", # bmi
"pmm", # hyp
"" # chl
),
seed = 101)
x11()
densityplot(impute)
Error in density.default(x = c(NA_real_, NA_real_, NA_real_, NA_real_, :
need at least 2 points to select a bandwidth automatically
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到密度图?如果我用 for""替换或只是运行,那么它将与此示例一起使用,以生成以下内容:
"pmm"chlimpute <- mice(nhanes)
但我不能用我自己的数据做到这一点,所以我正在寻找另一种方法......只是为了获得bmi和的密度图hyp,在使用上面的代码运行后mice,它不会估算 的值chl
编辑:我知道我可以使用我之前问题
的答案中的方法ggplot,但在这种情况下我真的需要使用densityplot
我有一些像这样的数据
var1 var2
10 NA
101 NA
NA 86
11 NA
NA 11
NA 61
Run Code Online (Sandbox Code Playgroud)
如果一个变量是NA,那么另一个变量不是,反之亦然.
如何将它们组合成一个变量:
var3
10
101
86
11
11
61
Run Code Online (Sandbox Code Playgroud)
我可以通过循环轻松完成,但它很慢,所以我想找到一种更简单的方法.我想将0分配给NA的值然后只是将变量加在一起......有更好的方法吗?