R - 仅保留列名与字符串匹配的列

时间:2016-03-25 17:10:02

标签: r awk dataframe

我对R比较陌生,我在这里找到了很多运气,但是经过2天的努力,这个让我难过。

我有一个包含如下列名称的数据框:

TargetID sample1.beta sample1.avg sample1.error sample1.pval sample2.beta sample2.avg sample2.error sample2.pval

重复数千个样本。我需要为每个数据创建多个独立的数据框:一个用于beta,一个用于avg,一个用于错误,一个用于pval。我还需要在所有数据帧中保留第一列与TargetID。生成的数据框将具有以下列名称:

TargetID sample1.beta sample2.beta sample3.beta

TargetID sample1.pval sample2.pval sample3.pval

我找到了数据框子集的答案,但它们似乎不适用于选择包含特定字符串的所有列(并保留第1列)。

在使用awk导入R之前,我一直在探索用txt文件做得更好。

2 个答案:

答案 0 :(得分:1)

在“[”的第二个位置使用greplgrep,其模式包含`TargetID和应用于名称的子集字符串(dfrm_name)。:

 avg_sub <- dfrm[ , grepl( "^TargetID|avg$", names(dfrm) ]

“^”模式匹配字符串的开头,而“4”模式匹配字符串的结尾。

答案 1 :(得分:1)

您可以尝试(因为您不使用mtcars提供示例数据):

library(dplyr)
# select the column mpg and all the columns containing an r
head(mtcars %>% select(mpg, contains("r")))
                   mpg drat gear carb
Mazda RX4         21.0 3.90    4    4
Mazda RX4 Wag     21.0 3.90    4    4
Datsun 710        22.8 3.85    4    1
Hornet 4 Drive    21.4 3.08    3    1
Hornet Sportabout 18.7 3.15    3    2
Valiant           18.1 2.76    3    1