R数据帧提取元素

时间:2014-06-25 12:26:05

标签: r dataframe frame

我有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较大时才有效

1 个答案:

答案 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