关于处理这些数据,我有很多(低效的(想法,但有人建议我在另一个问题上直接问大家
基本上,我有很多由多个用户获取的数据,其中包括样本的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