这个问题在这里已有答案:
我有下面提到的数据帧:
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
现在我想合并DF1
和DF2
但是在New_Data
中每一行都应该是唯一的,基于数据框架的ID
coloumn。
必填数据框:
新数据
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
行绑定两个数据帧,然后根据ID
列或ID
+ Type
列删除重复项(基于来自bind_rows
中后来数据帧的id列的重复行将被删除):
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
列:
bind_rows(df1, df2) %>% distinct(ID, .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
我想你可以用
unique(rbind(DF1,DF2))
我不确定这是否正是您想要的,但是要组合数据帧,您可以使用merge
函数:
# merge two data frames by ID
New_Data <- merge(DF1, DF2 ,by="ID", all=TRUE)
“all”参数仅表示对于DF1中的所有ID和DF2中的所有ID,New_Data中将有一行。但是,合并不应该重复行。有关详细信息,我建议查找内部和外部联接以及合并功能的文档。
以下是一些链接:
编辑:如果您不想处理合并,绑定行也将起作用。行绑定在一个数据帧的顶部执行垂直堆叠。要按字母顺序排序堆叠数据,您可以尝试:
New_Data <- unique(rbind( DF1, DF2))
New_Data <- New_Data[order(ID),]