我有2个数据帧,我只想要两个帧中的数字。我用这个函数:
CH3[CH2[,2] %in% CH3[,2],]
问题是,数据框的长度不同,此操作CH2[,2] %in% CH3[,2]
提供1400个真值。我已经搜索了一段时间,但找不到解决方案。如果我将它应用于1700长的CH3,我也得到所有附加数据,这些数据都没有标记为错误。是否有可以使用的功能参数或我是否需要解决方法?
EDIT1:
CH3<-read.table("unkown1.txt")
CH2<-read.table("unkown2.txt")
现在我只想要两个表中的元素。我用过:
CH3[CH3[,2] %in% CH2[,2],]
仅在CH3较大时才有效
答案 0 :(得分:1)
merge
是一个选项,具体取决于您要执行的操作:
CH2 <- data.frame(a=letters[1:20], b=1:20)
CH3 <- data.frame(a=letters[15:26], b=15:26)
merge(CH2, CH3, by=2)
产生
b a.x a.y
1 15 o o
2 16 p p
3 17 q q
4 18 r r
5 19 s s
6 20 t t
另一种选择是使用intersect
:
x <- intersect(CH2[, 2], CH3[, 2])
x
的位置:
[1] 15 16 17 18 19 20
然后您可以执行以下任一操作:
CH2[CH2[, 2] %in% x, ]
CH3[CH3[, 2] %in% x, ]
获得:
a b
15 o 15
16 p 16
17 q 17
18 r 18
19 s 19
20 t 20