Arrays 在R中提取组/因子中的其余行

Arrays 在R中提取组/因子中的其余行,arrays,r,dataframe,group-by,dplyr,Arrays,R,Dataframe,Group By,Dplyr,我有以下数据帧: x <- data.frame("A"=c(rep(4,3),rep(7,4),rep(2,2)), "B"=c("Q","Y"," ","F","Q"," ","Z","Q","C"), "C"=seq(1:9)) 使用dplyr和tidyr可以运行以下代码: mydf <- data.frame("A"=c(rep(4,3),rep(7,4),rep(2,2)),

我有以下数据帧:

x <- data.frame("A"=c(rep(4,3),rep(7,4),rep(2,2)),
                "B"=c("Q","Y"," ","F","Q"," ","Z","Q","C"),
                "C"=seq(1:9))

使用
dplyr
tidyr
可以运行以下代码:

mydf <- data.frame("A"=c(rep(4,3),rep(7,4),rep(2,2)),
                "B"=c("Q","Y"," ","F","Q"," ","Z","Q","C"),
                "C"=seq(1:9))

library(tidyverse)
mydf %>%
    group_by(A) %>% 
    mutate(selector=case_when(
        B=="Q" ~ 1
    )) %>% 
    fill(...=selector,.direction="down") %>% 
    filter(selector==1) %>% 
    select(-selector)) %>% 
    arrange(C,A) 
mydf%
组别(A)%>%
变异(选择符=案例(
B==“Q”~1
)) %>% 
填充(…=选择器,.direction=“down”)%>%
过滤器(选择器==1)%>%
选择(-selector))%>%
安排(C,A)
这就是结果:

      A B         C
  <dbl> <fct> <int>
1  4.00 Q         1
2  4.00 Y         2
3  4.00 " "       3
4  7.00 Q         5
5  7.00 " "       6
6  7.00 Z         7
7  2.00 Q         8
8  2.00 C         9
abc
14.00问题1
2 4.00 Y 2
3  4.00 " "       3
47.00第5季度
5  7.00 " "       6
6 7.00 Z 7
7.2.00第8季度
8 2.00 C 9

这就是你要找的吗

q_rows <- row.names(subset(x, B == 'Q')) # rows where Q occurs 
list_of_frames <- list()
for(i in 1:length(q_rows)) {
    q_start <- as.numeric(q_rows[i]);
    q_group <- as.numeric(x[q_start,c('A')])
    group_frame <- subset(x[q_start:nrow(x),], A == q_group)
    list_of_frames[i] <- list(group_frame)
    }

q_行这给了我想要的确切结果。非常感谢您抽出时间来帮忙!
q_rows <- row.names(subset(x, B == 'Q')) # rows where Q occurs 
list_of_frames <- list()
for(i in 1:length(q_rows)) {
    q_start <- as.numeric(q_rows[i]);
    q_group <- as.numeric(x[q_start,c('A')])
    group_frame <- subset(x[q_start:nrow(x),], A == q_group)
    list_of_frames[i] <- list(group_frame)
    }