首页 文章

根据列表中data.frame中因子变量的值选择行

提问于
浏览
0

我感觉我很接近,但我无法让它工作,你的帮助将不胜感激 .

我的目标是根据1个因子的值对列表中的数据进行子集化 . 它是关于在不同时间点暴露于刺激的受试者的数据 . 现在我想为每个刺激的所有主题的所有变量的数据进行子集化 . 刺激的变量称为“刺激” . 刺激的名称例如“Happy 8” . 所以示例路径:SubjList $ Subject1 $ Stimulus [“Happy 8”](虽然这也行不通 .

我的数据帧具有以下结构:

Subjdf大单(38个元素)

每个元素都是一个data.frame,包含大约4000个观察值(变化)和26个变量(包括“Stimulus”)

现在,我可以通过执行以下操作将所有主题(元素)的一列列为子集:

ColSub <- (lapply(SubjList,'[[','Stimulus'))

但是,当我尝试实现一个条件时,它不起作用 .

Happy8 <- (lapply(SubjList,'[[','Stimulus'=='Happy 8'))

不是简单的选择方法,如:

Happy8 <- SubjList$Subject1$Stimulus["Happy 8", ]

所以,我有一种方法只能按照条件op“Stimulus”==“Happy 8”的行进行子集 . 并创建具有相同变量的相同主题的列表,但仅创建Stimulus Happy 8的观察结果 .

先感谢您!

1 回答

  • 0

    这是你可以做的 . 数据框和列的名称不同:

    DF1 <- data.frame(year = c(seq(2000,2012,by=1)), 
                        C = runif(13,0,1))
    DF2 <- data.frame(year = c(seq(2000,2012,by=1)), 
                      C = runif(13,0,1))
    
    DL <- list(DF1, DF2)
    
    ColSub <- (lapply(DL, function(DF) {DF[DF$year >= 2005, "C"]}))
    ColSub
    

    这应该为您提供如何更改代码的想法 .

相关问题