使数据帧成为两个数据帧的子集

时间:2013-06-03 21:24:42

标签: r

我又难过了。

我有两个数据框

dataframe1

     a     b    c
[1]  21   12   22
[2]  11    9    6
[3]   4    6    7

dataframe2

      f    g   h
[1]  21   12   22
[2]  11    9    6
[3]   4    6    7

我想取第一列dataframe1并制作三个新数据帧,第二列分别是三个f,g和h

显然我可以一遍又一遍地做一个子集

subset1 <- cbind(dataframe1[,1]dataframe2[,1])
subset2 <- cbind(dataframe1[,1]dataframe2[,2])

但是我的数据帧将具有可变数量的列,并且数字排列非常长。所以我正在寻找一些更普遍的东西。我的数据框总是相同的长度。

我得到的最接近的是使用apply和cbind,但是我得到了一组三行a和f,a和g,a和h各自组合为单个数字向量或者我获得单个数据框架有四列,a,f,g,h。

非常感谢帮助。

1 个答案:

答案 0 :(得分:4)

您可以使用lapply迭代dataframe2的列,如下所示:

lapply(dataframe2, function(x) as.data.frame(cbind(dataframe1[,1], x)))

这将产生一个列表对象,其中每个条目对应一列dataframe2。例如:

$f
  V1  x
1 21 21
2 11 11
3  4  4

$g
  V1  x
1 21 12
2 11  9
3  4  6

$h
  V1  x
1 21 22
2 11  6
3  4  7