我尝试使用与this帖子完全相同的rbind函数。
我有3个数据帧,有2列(rownames和" source")。
在第一个和第二个数据帧之间有2个rownames重复值,在第一个和第三个数据帧之间有一个。
一
TMCS09g1008676 fleshy
TMCS09g1008677 fleshy
TMCS09g1008678 fleshy
TMCS09g1008679 fleshy
TMCS09g1008680 fleshy
TMCS09g1008681 fleshy
TMCS09g1008682 fleshy
TMCS09g1008683 fleshy
B'/ P>
TMCS09g1008684 rotten
TMCS09g1008685 rotten
TMCS09g1008686 rotten
TMCS09g1008682 rotten
TMCS09g1008688 rotten
TMCS09g1008689 rotten
TMCS09g1008690 rotten
TMCS09g1008691 rotten
TMCS09g1008683 rotten
TMCS09g1008693 rotten
C
TMCS09g1008695 good
TMCS09g1008696 good
TMCS09g1008697 good
TMCS09g1008698 good
TMCS09g1008683 good
TMCS09g1008700 good
TMCS09g1008701 good
TMCS09g1008702 good
TMCS09g1008703 good
TMCS09g1008704 good
TMCS09g1008705 good
在应用该帖子中建议的功能后:
duprows <- which(!is.na(match(rownames(a),rownames(b))))
rbind(a, b[-duprows,])
> rbind(a, b[-duprows,])
source
TMCS09g1008677 fleshy
TMCS09g1008678 fleshy
TMCS09g1008679 fleshy
TMCS09g1008680 fleshy
TMCS09g1008681 fleshy
TMCS09g1008682 fleshy
TMCS09g1008683 fleshy
8 <NA>
Warning message:
In
并[d - 因子(
TMP , ri, value = 1L) :
invalid factor level, NA generated
主要的是我想保留数据框的第二列&#34; a&#34;对于重复的值。我多么清楚。
提前致谢
答案 0 :(得分:0)
您如何看待这一点。
样本数据(您的数据 - 可重现;)):
require(tidyverse)
a <- data.frame(ID = c("TMCS09g1008676",
"TMCS09g1008677",
"TMCS09g1008678",
"TMCS09g1008679",
"TMCS09g1008680" ,
"TMCS09g1008681",
"TMCS09g1008682",
"TMCS09g1008683"), Staus = rep("fleshy"))
b <- data.frame(ID = c( "TMCS09g1008684" ,
"TMCS09g1008685" ,
"TMCS09g1008686" ,
"TMCS09g1008682" ,
"TMCS09g1008688" ,
"TMCS09g1008689" ,
"TMCS09g1008690" ,
"TMCS09g1008691",
"TMCS09g1008683" ,
"TMCS09g1008693"), Staus = rep("rotten"))
c <- data.frame(ID = c( "TMCS09g1008695" ,
"TMCS09g1008696" ,
"TMCS09g1008697" ,
"TMCS09g1008698" ,
"TMCS09g1008683" ,
"TMCS09g1008700" ,
"TMCS09g1008701" ,
"TMCS09g1008702" ,
"TMCS09g1008703" ,
"TMCS09g1008704" ,
"TMCS09g1008705" ), Staus = rep("good"))
您可以使用plyr::join_all
进行匹配。由于您具有重复的ID,因此将强制它打开新列以适合重复的值。
plyr::join_all(list(a,b,c), by = "ID")
结果:
ID Staus Staus Staus
1 TMCS09g1008676 fleshy <NA> <NA>
2 TMCS09g1008677 fleshy <NA> <NA>
3 TMCS09g1008678 fleshy <NA> <NA>
4 TMCS09g1008679 fleshy <NA> <NA>
5 TMCS09g1008680 fleshy <NA> <NA>
6 TMCS09g1008681 fleshy <NA> <NA>
7 TMCS09g1008682 fleshy rotten <NA>
8 TMCS09g1008683 fleshy rotten good