我有一张桌子,看起来像这样:
| variable | observer1 | observer2 | observer3 | final |
| -------- | --------- | --------- | --------- | ----- |
| case1 | | | | |
| var1 | 1 | 1 | | |
| var2 | 3 | 3 | | |
| var3 | 4 | 5 | | 5 |
| case2 | | | | |
| var1 | 2 | | 2 | |
| var2 | 5 | | 5 | |
| var3 | 1 | | 1 | |
| case3 | | | | |
| var1 | | 2 | 3 | 2 |
| var2 | | 2 | 2 | |
| var3 | | 1 | 1 | |
| case4 | | | | |
| var1 | 1 | | 1 | |
| var2 | 5 | | 5 | |
| var3 | 3 | | 3 | |
三个观察者专栏,但只填补了两个。 首先,我想计算IRR,因此我需要一个有两列且没有空单元格的表:
| variable | observer1 | observer2 |
| -------- | --------- | --------- |
| case1 | | |
| var1 | 1 | 1 |
| var2 | 3 | 3 |
| var3 | 4 | 5 |
| case2 | | |
| var1 | 2 | 2 |
| var2 | 5 | 5 |
| var3 | 1 | 1 |
| case3 | | |
| var1 | 2 | 3 |
| var2 | 2 | 2 |
| var3 | 1 | 1 |
| case4 | | |
| var1 | 1 | 1 |
| var2 | 5 | 5 |
| var3 | 3 | 3 |
我尝试使用tidyverse软件包,但不确定。一些“ ifelse()”魔术可能更容易。 是否有一种干净便捷的方法来执行这样的事情?有人可以指出我要使用的正确功能吗?还是只针对要在stackoverflow上搜索的关键字?我发现了很多删除整个空列或行的方法。
编辑:我删除了原始数据的链接。没必要。感谢Lamia的工作答复。
答案 0 :(得分:0)
在您的3列UNAME AGR_NAME CHILD_AGR
nik abc x
nik abc y
,observer1
和observer2
中,有时您有2个非observer3
值,1个非NA
值或3个NA
值。
如果要合并3列,可以执行以下操作:
NA
如果有2,则res = data.frame(df$coding,t(apply(df[paste0("observer",1:3)],1,function(x) x[!is.na(x)][1:2])))
函数将为每行返回2个非apply
值,如果只有2个,则返回1个非NA
值一个值,如果该行中没有数据,则返回两个NA
。
然后,我们将此结果放入第一列(NA
)的数据框中。