【问题标题】:Subsetting a data frame by participant ID [duplicate]按参与者 ID 子集数据框 [重复]
【发布时间】:2021-07-22 07:37:31
【问题描述】:

我是 R 新手,并试图通过参与者 ID/观察号从现有数据框 (“A”) 创建一个新数据框 (“B”)。我尝试使用子集函数,但它似乎没有认识到我想要数据行,而不是列。我正在寻找的子集不一定遵循任何逻辑(参与者子集同意研究的其他组成部分)。

我尝试了什么:

B <- subset.data.frame(A, A$ParticipantID == "1", "7", "10", )

B <- subset(A[A$participantID == 1, 7, 10])

根据我看到的示例,我能想到的几乎所有代码变体。提前致谢!

【问题讨论】:

  • 尝试A[A$ParticipantID %in% c(1, 7, 10), ] 应该对数据框 A 的所有列进行子集化,其中 ParticipantID 为 1、7 或 10。假设 ParticipantID 为数字。

标签: r dataframe subset


【解决方案1】:

我建议你试试这个简单的代码。为每个参与者 ID 创建单独的数据库,然后将它们合并到一个数据库中:

ParticipantID1 <- A[A$ParticipantID=="1",]
ParticipantID7 <- A[A$ParticipantID=="7",]
ParticipantID10 <- A[A$ParticipantID=="10",]
B <- rbind(ParticipantID1, ParticipantID7, ParticipantID10)

当参与者 ID 是字符串向量时,此代码有效。如果是数字,只需使用以下代码:

ParticipantID1 <- A[A$ParticipantID==1,]
ParticipantID7 <- A[A$ParticipantID==7,]
ParticipantID10 <- A[A$ParticipantID==10,]
B <- rbind(ParticipantID1, ParticipantID7, ParticipantID10)

希望它有效!

【讨论】:

    【解决方案2】:

    我真的很喜欢在 dplyr 包中使用管道的整洁方法。它有助于保持代码的可读性

    library(dplyr)
    
    B<-A %>%
     filter(ParticipantID %in% c(1,7,10))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2013-10-20
      • 2020-05-04
      • 2013-10-29
      • 1970-01-01
      • 2016-04-20
      相关资源
      最近更新 更多