r-最有效的数据处理策略,潜在的双重和缺失值



关于处理这些数据,我有很多(低效的(想法,但有人建议我在另一个问题上直接问大家

基本上,我有很多由多个用户获取的数据,其中包括样本的ID号和两个权重变量(处理前和处理后(。因为数据不是按ID顺序处理的,而且数据是在非常不同的时间收集的,用于前处理和后处理,所以用户很难(可能会增加数据输入错误的可能性(找到ID和前列来输入帖子。

因此,数据帧看起来像这样:

#example data creation
id = c(rep(1:4,2),5:8)
pre = c(rep(10,4),rep(NA,4),rep(100,4))
post = c(rep(NA,4),rep(10,4),rep(100,4))
df = cbind(id,pre,post)
print(df)
id pre post
[1,]  1  10   NA
[2,]  2  10   NA
[3,]  3  10   NA
[4,]  4  10   NA
[5,]  1  NA   10
[6,]  2  NA   10
[7,]  3  NA   10
[8,]  4  NA   10
[9,]  5 100  100
[10,]  6 100  100
[11,]  7 100  100
[12,]  8 100  100

我问了另一个关于如何合并数据的问题,所以我对此感觉很好。我想知道在合并列之前,最好的方法是清除数据帧中的用户错误。

具体来说,我正在寻找一个ID是否有pre而没有post(反之亦然(,或者是否有任何值的双条目。理想情况下,我只想将所有奇怪的数据(双重、丢失(ID注入一个新的数据帧,这样我就可以去调查并看看问题是什么

例如,如果我的数据帧是这样的:

id pre post
1   1  10   NA
2   1  10   NA
3   2  10   NA
4   3  10   NA
6   2  NA   10
7   3  NA   10
8   4  NA   10
9   5 100  100
10  6 100  100

我如何识别id#1已经输入了两次,并且id 1和4缺少一个post和pre-intry?我所需要做的就是检测这些异常,并将它们吐到数据帧中!谢谢

我不确定以下是所有问题。

na <- rowSums(is.na(df[, -1])) > 0
df[duplicated(df[,1]) | na, ]
#     id pre post
#[1,]  1  10   NA
#[2,]  2  10   NA
#[3,]  3  10   NA
#[4,]  4  10   NA
#[5,]  1  NA   10
#[6,]  2  NA   10
#[7,]  3  NA   10
#[8,]  4  NA   10

最新更新