【问题标题】:R - keep only columns with column names that match a stringR - 只保留列名与字符串匹配的列
【发布时间】:2016-03-25 17:10:02
【问题描述】:

我对 R 比较陌生,我很幸运能在这里找到答案,但是在尝试了 2 天之后,这个问题让我很难过。

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

目标ID sample1.beta sample1.avg sample1.error sample1.pval sample2.beta sample2.avg sample2.error sample2.pval

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

目标ID sample1.beta sample2.beta sample3.beta

目标ID sample1.pval sample2.pval sample3.pval

等等

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

在我使用 awk 导入 R 之前,我也一直在探索是否最好使用 txt 文件来完成。

【问题讨论】:

  • 如果没有可重复的示例,则不清楚。但你可以试试library(data.table); melt(setDT(df1), measure=patterns("beta$", "avg$", "error$", "pval$"))

标签: r awk dataframe


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以尝试(因为您不使用 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
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2023-02-02
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多