R:如何在一个数据帧中连接重复的行

3c.*_*3c. 2 join r duplicates dataframe

我有一个带有某些重复行的数据框,我只想联接这些重复行。下面给出一个例子:

    name  b   c   d 
1   yp    3   NA  NA
2   yp    3   1   NA
3   IG    NA  3   NA
4   OG    4   1   0
Run Code Online (Sandbox Code Playgroud)

重复的行由具有相同名称的行定义。因此,在此示例中,需要以某种方式连接行1和行2,并NA用可能的数值替换这些值。

    name  b   c   d 
1   yp    3   1   NA
2   IG    NA  3   NA
3   OG    4   1   0
Run Code Online (Sandbox Code Playgroud)

假设:如果两行具有相同的名称,并且其对应的列不是NA,则对应的列值必须是相同的数值。

tal*_*lat 5

这是dplyr的方法:

library(dplyr)
df %>% group_by(name) %>% summarise_each(funs(first(.[!is.na(.)])))
#Source: local data frame [3 x 4]
#
#    name     b     c     d
#  (fctr) (int) (int) (int)
#1     IG    NA     3    NA
#2     OG     4     1     0
#3     yp     3     1    NA
Run Code Online (Sandbox Code Playgroud)

这将按“名称”对数据进行分组,并为每个唯一名称返回一行,并且在其他所有列中均返回第一个不是NANA如果所有条目均为NAs的值。这符合以下假设:如果存在多个数值,则它们必须全部相同(因此,我们可以选择第一个数值)。