R 在数据帧中滚动对角线NA模式?
这就是我的数据帧的外观:R 在数据帧中滚动对角线NA模式?,r,R,这就是我的数据帧的外观: ID1 ID2 Value1 Value2 Value3 0 0 5 NA NA 0 0 NA 2 NA 0 0 NA NA 3 0 1 1 NA NA 0 1 NA 4 NA 0 1 NA NA 5 0 2
ID1 ID2 Value1 Value2 Value3
0 0 5 NA NA
0 0 NA 2 NA
0 0 NA NA 3
0 1 1 NA NA
0 1 NA 4 NA
0 1 NA NA 5
0 2 3 NA NA
0 2 NA 1 NA
0 2 NA NA 4
1 0 3 NA NA
1 0 NA 3 NA
1 0 NA NA 8
1 1 4 NA NA
1 1 NA 4 NA
1 1 NA NA 9
1 2 2 NA NA
1 2 NA 3 NA
1 2 NA NA 5
2 0 7 NA NA
2 0 NA 2 NA
2 0 NA NA 1
汇总数据帧的最有效方法是什么,以使ID1
和ID2
的所有唯一组合都包含一行值,而不是NA
例如:
ID1=0
和ID2=0
如下所示:
0 0 5 2 3
0 1 1 4 5
ID1=0
和ID2=1
如下所示:
0 0 5 2 3
0 1 1 4 5
等等…我们可以使用
data.table
。将“data.frame”转换为“data.table”(setDT(df1)
),按“ID1”、“ID2”分组,取消列的列表,删除NA
元素并转换为list
library(data.table)
DT <- setDT(df1)[, as.list(na.omit(unlist(.SD))) , by =.(ID1, ID2)]
setnames(DT, 3:5, names(df1)[3:5])
DT
# ID1 ID2 Value1 Value2 Value3
#1: 0 0 5 2 3
#2: 0 1 1 4 5
#3: 0 2 3 1 4
#4: 1 0 3 3 8
#5: 1 1 4 4 9
#6: 1 2 2 3 5
#7: 2 0 7 2 1
库(plyr)
df1认为它确实给了我一些小警告:聚合函数丢失,默认为“length”。你知道怎么避免吗?不确定长度应该在哪里placed@jimbojones根据提供的示例,我没有收到任何警告。如果每个组有多个元素而不是对角元素,则可能会发生这种情况。在这种情况下,我们需要另一个分组变量。最好用一个显示警告的示例进行更新。啊哈,我解决了这个问题。再次感谢您的帮助@akrun