R:如何根据第一行的值对列进行子集化?
R: How to subset columns based on values of the first row?
我想根据第一行中的某个值制作列的子集。举个例子:
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 列,而且列名的名称也很重要,这就是为什么我将第一行用作第二行 header。这个例子的结果应该是 return:
region region.3
1 A A
2 5 3
3 2 4
4 4 5
以及如何避免在同名(region.1、region.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
我想根据第一行中的某个值制作列的子集。举个例子:
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 列,而且列名的名称也很重要,这就是为什么我将第一行用作第二行 header。这个例子的结果应该是 return:
region region.3
1 A A
2 5 3
3 2 4
4 4 5
以及如何避免在同名(region.1、region.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