如何在从R数据帧中删除重复时保留上一行

时间:2018-03-05 18:17:30

标签: r dataframe dplyr tidyr

我有下面提到的数据框:

DF1

T1  ID   Type
1   A    L
2   B    Y
3   C    B
4   D    U
5   E    Z

DF2

T1  ID   Type
1   A    L
2   B    Y
3   F    K
4   G    I
5   H    T

现在我要合并DF1DF2,但根据数据框的New_Data coloumn,ID中的每一行都应该是唯一的。

必填数据框:

NEW_DATA

T1  ID   Type
1   A    L
2   B    Y
3   C    B
4   D    U
5   E    Z
3   F    K
4   G    I
5   H    T

3 个答案:

答案 0 :(得分:3)

我认为你可以使用

unique(rbind(DF1,DF2))

答案 1 :(得分:1)

行绑定两个数据帧,然后根据ID列或ID + Type列删除重复项(基于{{1}后面数据框中的id列的重复行将被删除):

bind_rows

仅基于bind_rows(df1, df2) %>% distinct(ID, Type, .keep_all = T) # T1 ID Type #1 1 A L #2 2 B Y #3 3 C B #4 4 D U #5 5 E Z #6 3 F K #7 4 G I #8 5 H T 列:

ID

答案 2 :(得分:0)

我不确定这是否正是您想要的,但要合并数据框,您可以使用merge功能:

# merge two data frames by ID
New_Data <- merge(DF1, DF2 ,by="ID", all=TRUE)

&#34; all&#34;参数只是意味着对于DF1中的所有ID和DF2中的所有ID,New_Data中都会有一行。但是,合并不应该重复行。有关详细信息,我建议查找内部和外部联接以及合并功能的文档。

以下是一些链接:

编辑:如果您不想处理合并,绑定行也会有效。行绑定在一个数据帧的顶部执行垂直堆叠。要按字母顺序排序堆叠数据,您可以尝试:

New_Data <- unique(rbind( DF1, DF2))
New_Data <-  New_Data[order(ID),]