根据模式选择列
Selecting columns based on pattern
可能重复:
Extracting specific columns from a data frame
我有一个数据框,它遵循列中的模式。这里我有大约 10 列,但实际上在最终数据框中,列数是未知的,因为它取决于给定的数据。
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
ADAM32 P 0.001000000 40.61038 P 0.001000000 40.61038 P 0.001000000 40.61038
CCL5 P 0.000491000 6546.20000 P 0.000491000 6546.20000 P 0.000491000 6546.20000
CILP2 A 0.500000024 92.66398 A 0.500000024 92.66398 A 0.500000024 92.66398
EPHB3 P 0.000562000 461.30000 P 0.000562000 461.30000 P 0.000562000 461.30000
GUCA1A P 0.002006000 9.40000 P 0.002006000 9.40000 P 0.002006000 9.40000
HSPA6 P 0.000322000 564.00000 P 0.000322000 564.00000 P 0.000322000 564.00000
MAPK1 P 0.002000000 435.00000 P 0.002000000 435.00000 P 0.002000000 435.00000
PIGX P 0.003822926 411.38856 P 0.003822926 411.38856 P 0.003822926 411.38856
PTPN21 M 0.051040220 94.30000 M 0.051040220 94.30000 M 0.051040220 94.30000
THRA M 0.054470000 151.10000 M 0.054470000 151.10000 M 0.054470000 151.10000
UBA7 P 0.000468000 845.60000 P 0.000468000 845.60000 P 0.000468000 845.60000
WFDC2 P 0.005475547 177.61689 P 0.005475547 177.61689 P 0.005475547 177.61689
7-Mar P 0.000673000 643.20000 P 0.000673000 643.20000 P 0.000673000 643.20000
在上面的数据框中,我想要前两列,然后是两列之后的列,两列之后的列,等等。因此我想要 v1、v2、v5、v8 等等,直到数据帧用完。因此,如果我有一个包含 1000 列的相同模式的数据框,我该如何 select 列?
预期输出:
V1 V2 V5 V8
ADAM32 P P P
CCL5 P P P
CILP2 A A A
EPHB3 P P P
GUCA1A P P P
HSPA6 P P P
MAPK1 P P P
PIGX P P P
PTPN21 M M M
THRA M M M
UBA7 P P P
WFDC2 P P P
7-Mar P P P
如果标准是 select 只有非数字的列,您可以使用过滤器:
Filter(Negate(is.numeric), df)
虚拟数据示例:
df = data.frame('a','b',1,2,'c',23,45.0,'c')
Filter(function(u) !is.numeric(u), df)
# X.a. X.b. X.c. X.c..1
#1 a b c c
到select第一列,第二列,第五列,第八列等等,你也可以试试:
df[,c(1,(1:ceiling(length(df)/3))*3-1)]
seq
函数可以通过以下方式帮助解决此问题:
df <- read.table('clipboard',header=T)
df[, c(1,2,seq(5,ncol(df),3))]
V1 V2 V5 V8
1 ADAM32 P P P
2 CCL5 P P P
3 CILP2 A A A
4 EPHB3 P P P
5 GUCA1A P P P
6 HSPA6 P P P
7 MAPK1 P P P
8 PIGX P P P
9 PTPN21 M M M
10 THRA M M M
11 UBA7 P P P
12 WFDC2 P P P
13 7-Mar P P P
本质上 seq
根据需要创建序列,即从 5 开始直到列的总数和 returns 每两列一个列索引。在此我只是根据需要添加了第一列和第二列。
可能重复: Extracting specific columns from a data frame
我有一个数据框,它遵循列中的模式。这里我有大约 10 列,但实际上在最终数据框中,列数是未知的,因为它取决于给定的数据。
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
ADAM32 P 0.001000000 40.61038 P 0.001000000 40.61038 P 0.001000000 40.61038
CCL5 P 0.000491000 6546.20000 P 0.000491000 6546.20000 P 0.000491000 6546.20000
CILP2 A 0.500000024 92.66398 A 0.500000024 92.66398 A 0.500000024 92.66398
EPHB3 P 0.000562000 461.30000 P 0.000562000 461.30000 P 0.000562000 461.30000
GUCA1A P 0.002006000 9.40000 P 0.002006000 9.40000 P 0.002006000 9.40000
HSPA6 P 0.000322000 564.00000 P 0.000322000 564.00000 P 0.000322000 564.00000
MAPK1 P 0.002000000 435.00000 P 0.002000000 435.00000 P 0.002000000 435.00000
PIGX P 0.003822926 411.38856 P 0.003822926 411.38856 P 0.003822926 411.38856
PTPN21 M 0.051040220 94.30000 M 0.051040220 94.30000 M 0.051040220 94.30000
THRA M 0.054470000 151.10000 M 0.054470000 151.10000 M 0.054470000 151.10000
UBA7 P 0.000468000 845.60000 P 0.000468000 845.60000 P 0.000468000 845.60000
WFDC2 P 0.005475547 177.61689 P 0.005475547 177.61689 P 0.005475547 177.61689
7-Mar P 0.000673000 643.20000 P 0.000673000 643.20000 P 0.000673000 643.20000
在上面的数据框中,我想要前两列,然后是两列之后的列,两列之后的列,等等。因此我想要 v1、v2、v5、v8 等等,直到数据帧用完。因此,如果我有一个包含 1000 列的相同模式的数据框,我该如何 select 列?
预期输出:
V1 V2 V5 V8
ADAM32 P P P
CCL5 P P P
CILP2 A A A
EPHB3 P P P
GUCA1A P P P
HSPA6 P P P
MAPK1 P P P
PIGX P P P
PTPN21 M M M
THRA M M M
UBA7 P P P
WFDC2 P P P
7-Mar P P P
如果标准是 select 只有非数字的列,您可以使用过滤器:
Filter(Negate(is.numeric), df)
虚拟数据示例:
df = data.frame('a','b',1,2,'c',23,45.0,'c')
Filter(function(u) !is.numeric(u), df)
# X.a. X.b. X.c. X.c..1
#1 a b c c
到select第一列,第二列,第五列,第八列等等,你也可以试试:
df[,c(1,(1:ceiling(length(df)/3))*3-1)]
seq
函数可以通过以下方式帮助解决此问题:
df <- read.table('clipboard',header=T)
df[, c(1,2,seq(5,ncol(df),3))]
V1 V2 V5 V8
1 ADAM32 P P P
2 CCL5 P P P
3 CILP2 A A A
4 EPHB3 P P P
5 GUCA1A P P P
6 HSPA6 P P P
7 MAPK1 P P P
8 PIGX P P P
9 PTPN21 M M M
10 THRA M M M
11 UBA7 P P P
12 WFDC2 P P P
13 7-Mar P P P
本质上 seq
根据需要创建序列,即从 5 开始直到列的总数和 returns 每两列一个列索引。在此我只是根据需要添加了第一列和第二列。