R:如何获得相应的值列?

时间:2015-10-03 11:06:54

标签: r

假设我有三列A,B和C.我已经采用了A的一个子集(比如每隔一行),我如何在C中获得这些行的相应值?

    A   B   C
1   a1  a1  c1
2   a2  b2  c2
3   a3  b3  c3
4   a4  b4  c4

我想:

     A   C
1   a1  c1
2   a3  c3

注意:对A列中的子集使用每隔一行只是一个例子,我正在寻找更通用的解决方案。也就是说,如果我有A列的子集,我如何在C列中获得相应的值?

1 个答案:

答案 0 :(得分:1)

我们可以将TRUE/FALSE作为行索引进行回收以获取交替行,将列名称作为列索引进行回收以对数据集进行子集化。

df1[c(TRUE, FALSE),c('A', 'C')]
#   A  C
#1 a1 c1
#3 a3 c3

如果我们想根据'A'中的值对行进行子集化,请根据'A'创建行索引,并选择我们需要在预期输出中包含的列。

df1[df1$A %in% c('a1', 'a3'), c('A', 'C')]

如果我们使用data.table(使用setDT将data.frame转换为data.table),我们可以设置键列,然后使用'subA中的元素直接对行进行子集化”。对于列索引,它与上面的类似,但我们需要使用with=FALSE。可以在?data.table

找到更多信息
library(data.table)
subA <- c('a1', 'a3')
setDT(df1, key='A')[subA, c('A', 'C'), with=FALSE]
#   A  C
#1: a1 c1
#2: a3 c3