我有3个数据帧。我需要删除所有三个数据帧中都没有rownames的行。而不是采用转置,合并,拆分和重新标记行,我一直在使用它来处理两个数据帧:
df1 = df1[rownames(df1) %in% rownames(df2), ]
df2 = df2[rownames(df2) %in% rownames(df1), ]
这样做会使df1删除所有未出现在第二个数据集中的行,反之亦然。
但是如何为3个或4个数据集执行此操作?我需要这样的东西:
df1 = df1[rownames(df1) %in% c(rownames(df2), rownames(df3)), ]
但这似乎使它删除了BOTH df2和df3不存在的行,而我需要删除df2中不存在的行以及df3中不存在的任何行。
例如:if:
df1有三行,rownames为x1,x2和x3
df2有行x2,x3,x4
df3有行x3,x4,x5
这三个共同的唯一行是x3,所以我希望从三个数据帧中删除所有其他行。
答案 0 :(得分:0)
也许您要找的只是&
?
df1 <- data.frame(a = c(1,2,3), row.names = c("x1","x2","x3"))
df2 <- data.frame(b = c(2,3,4), row.names = c("x2","x3","x4"))
df3 <- data.frame(c = c(3,4,5), row.names = c("x3","x4","x5"))
df1[rownames(df1) %in% rownames(df2) & rownames(df1) %in% rownames(df3),
, drop = F] # the drop = F is here only so you see the dimnames
a
x3 3