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)
}