【问题标题】:How to extract specific rows from dataframe efficiently?如何有效地从数据框中提取特定行?
【发布时间】:2022-09-30 23:30:23
【问题描述】:

我有一个数据框mydata,其中包含 60 名参与者的长格式数据。我想最终每个参与者都有一个数据框来循环它们。正如你在下面看到的,参与者有他们独特的 ppnrXXXX 和不同的行数。

Sample_ID Datapoint
ppnrR2Mdo2_05-01-2022_1500) (60.3 s) 0.54
ppnrR2Mdo2_05-01-2022_1500) (60.35 s) 0.25
ppnrR4Ksm_05-01-2022_1500) (20.3 s) 0.68
ppnrR4Ksm_05-01-2022_1500) (60.35 s) 0.21
ppnrR4Ksm_05-01-2022_1500) (60.40 s) 0.78

我以为我可以做这样的事情:

ppnrR2Mdo2_data <- mydata[grep(\"ppnrR2Mdo2\", mydata$Sample_ID), ]

但是,我有 60 名参与者,所以这需要 60 行代码?

有没有办法循环遍历行并查看 ppnr 是否更改?

    标签: r dataframe grep


    【解决方案1】:

    不是创建多个数据集,而是按方法进行分组,或者将数据 split 放入 data.frames 的 list 中,然后遍历 list 并应用代码

    lst1 <- split(mydata, sub("_.*", "", mydata$Sample_ID))
    

    在这里,我们使用sub 匹配从_ 开始的子字符串,后跟任何字符(.*),然后将其替换为空格("")以删除它们,并将其用于split 数据

    > str1 <- "ppnrR2Mdo2_05-01-2022_1500) (60.3 s)"
    > sub("_.*", "", str1)
    [1] "ppnrR2Mdo2"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2013-10-02
      • 1970-01-01
      相关资源
      最近更新 更多