我正在尝试分析一些数据作为我论文的一部分,但开发代码被证明是不可能的(对我来说)
我正在使用更大数据的子集来开发我的代码。(不知道如何链接数据框)
head(df)
well x y time dist speed grp
1 1 117 127 15.265 0.000000 0.00000000 1
2 1 118 127 15.303 1.000000 0.06534666 1
3 1 118 127 15.339 0.000000 0.00000000 1
4 1 118 127 15.368 0.000000 0.00000000 1
5 1 119 129 15.403 2.236068 0.14517094 1
6 1 120 129 15.443 1.000000 0.06475426 1
tail(df)
well x y time dist speed grp
664074 24 519 345 6957.419 0.000000 0.0000000000 24
664075 24 519 345 6957.453 0.000000 0.0000000000 24
664076 24 519 345 6957.490 0.000000 0.0000000000 24
664077 24 519 345 6957.529 0.000000 0.0000000000 24
664078 24 518 345 6957.557 1.000000 0.0001437286 24
664079 24 517 344 6957.598 1.414214 0.0002032618 24
本质上,X
,Y
值来自 24 孔板。记录周期结束后,该grp
值将增加 N+1(只是巧合,grp
/well
以相同的值结束)。
在每个记录周期之后,记录会中断,一旦完成,记录将恢复。我目前正在尝试分析我设置为的数据中的缺失值NA
。为了找到缺失的值,我使用了 MICE 包,使用了这段代码(如下)。我希望well
MICE 包单独分析每个组,而不是一次性分析所有X
坐标Y
。
for (i in unique(df$well)){
w1 <- df[df$well==i,]
for (j in unique(w1$grp)){
w2 <- w1[w1$grp==j,]
temp_df <- mice(data = w2, m = 5, method = "rf", maxit = 5)
}
}
两件事 - 首先,for 循环非常慢,我不确定提高脚本速度的方法。我最初的想法是在我的 df 中创建一个新列,每次df$well
值更改时都会填充 N+1 ,因为这将包含df$well
& df$grp
,但我一直无法想出一个函数来生成它。生成新列后,我可以使用一个 for 循环,而不是上面的两个 - 我认为这会提高速度吗?其次,上面的脚本不断地重写“temp_df”,而我要求它添加到它——我尝试使用搜索结果中建议的“rbind”和“apply”,但无济于事。
如果这看起来相对简单,或者已经在其他地方得到了回答,我们深表歉意。正如我所说,我对 R 和一般的计算语言相对较新。