Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在数据帧中滚动对角线NA模式?_R - Fatal编程技术网

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