如何在 R 中创建一个循环,在数据帧中搜索包含某些值的文件,并对它们进行子集化?

问题描述 投票:0回答:1

假设我有这些数据:

数据<- data.frame( Setting = c("start", "continue focal", "end", "start", "continue focal", "end", "start", "continue focal", "end", "start", "continue focal", "end"), Behaviour = c("grooming", "sleep", "fight", "grooming", "sleep", "fight", "grooming", "sleep", "fight", "grooming", "sleep", "fight") )

乍一看,我在这里看到 4 个行子集(以 start 开始,以 end 结束)。我可以做什么来提取这 4 个子集,以便将它们单独作为数据框?

我尝试创建一个 while 循环,因此如果出现某些值(开始和结束),它会逐行搜索,然后它们之间的所有内容(包括它们)都将转换为新的数据帧。尽管如此,我发现自己真的陷入困境,因为我无法让它工作。

r loops while-loop subset
1个回答
0
投票

如果我理解了这个问题,这是一个可能的解决方案。

  1. 每当新序列开始时创建一个指示器
  2. 计算指标变量的累积和
  3. 使用
    split
    根据累加和的变量来切割数据框
data <- data.frame( Setting = c("start", "continue focal", "end", "start", "continue focal", "end", "start", "continue focal", "end", "start", "continue focal", "end"),
                    Behaviour = c("grooming", "sleep", "fight", "grooming", "sleep", "fight", "grooming", "sleep", "fight", "grooming", "sleep", "fight") )

dataGrouped<-data %>%
  dplyr::mutate(newStart = ifelse(Setting=="start",1,0)) %>%
  dplyr::mutate(cumulativeSum = cumsum(newStart))
  
split(dataGrouped,dataGrouped$cumulativeSum)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.