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