R:如何根据第一行的值对列进行子集化?

时间:2015-10-08 18:50:26

标签: r subset

我想根据第一行中的某个值创建列的子集。这是一个例子:

df <- data.frame( region = c("A", sample(1:5,3)),
                  region = c("B", sample(1:5,3)),
                  region = c("C", sample(1:5,3)),
                  region = c("A", sample(1:5,3)) )

> df
  region region.1 region.2 region.3
1      A        B        C        A
2      5        5        3        3
3      2        1        5        4
4      4        2        1        5

我想要在第一行中显示所有显示A的列。我无法使用索引号执行此操作,因为我的数据集中有超过3000列,并且列号的名称也很重要,这就是为什么我将第一行用作第二个标题。此示例的结果应返回:

  region  region.3
1      A         A
2      5         3
3      2         4
4      4         5 

我怎样才能避免在相同名称(region.1,region.2 ......)的同名中自动计数?谢谢你的想法。

1 个答案:

答案 0 :(得分:2)

您可以使用

中的索引
> df[, df[1, ] == "A"]
  region region.3
1      A        A
2      3        1
3      2        5
4      1        4

尝试将check.names=FALSE用于第二个问题

> data.frame( region = c("A", sample(1:5,3)),
+             region = c("B", sample(1:5,3)),
+             region = c("C", sample(1:5,3)),
+             region = c("A", sample(1:5,3)), check.names=FALSE )
  region region region region
1      A      B      C      A
2      5      5      4      2
3      2      1      5      5
4      4      2      2      4