Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 选择两年内具有相同组的行_R_Dataframe_Dplyr - Fatal编程技术网

R 选择两年内具有相同组的行

R 选择两年内具有相同组的行,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个样本数据集,如下所示: df <- data.frame(Group = c("a", "d", "a", "b", "b", "c", "c", "c", "c"), Year = c("1991", '1992', '1993', '1991',

我有一个样本数据集,如下所示:

df <- data.frame(Group = c("a", "d", "a", "b", "b", "c", "c", "c", "c"), 
                 Year = c("1991", '1992', '1993', '1991', '1992', '1991', '1992','1993','1994'), 
                 value = 1:9)
这就是我所尝试的:

df2 <- df %>% group_by(Group, Year) %>% 
  mutate(total = n()) %>% 
  filter(total == 3)
df2%分组依据(分组,年份)%>%
突变(总数=n())%>%
过滤器(总计==3)

我可以将
total==3
更改为
total==2
,但无论如何,它会过滤观察结果,以便每年都有相同的组,而我只想将选择标准建立在1991年的基础上。

这里有一种方法可以使用
dplyr
-

df %>% 
  arrange(Year, Group) %>% # not necessary but nice to have I think
  filter(Group %in% Group[Year == 1991])

  Group Year value
1     a 1991     1
2     b 1991     4
3     c 1991     6
4     b 1992     5
5     c 1992     7
6     a 1993     3
7     c 1993     8
8     c 1994     9

这里有一种使用dplyr的方法-

df %>% 
  arrange(Year, Group) %>% # not necessary but nice to have I think
  filter(Group %in% Group[Year == 1991])

  Group Year value
1     a 1991     1
2     b 1991     4
3     c 1991     6
4     b 1992     5
5     c 1992     7
6     a 1993     3
7     c 1993     8
8     c 1994     9

我并不完全清楚您想要的输出是什么,但我更喜欢一个数据帧列表,稍后可以将其附加在一起

注意:这可能超出了您的需要,因为其他答案只是根据
Year
列的子集中的值筛选行

库(data.table)
Lappy(分割数据帧(df,df$年),
函数(x)不带省略(setDT(x)[setDT(df[df$Year='1991',]),
on=(组)])
# $`1991`
#集团年度价值i.年度价值i
#1:a 1991 1 1991 1
#2:b 1991 4 1991 4
#3:c 1991 6 1991 6
#  
# $`1992`
#集团年度价值i.年度价值i
#1:b 1992 5 1991 4
#2:c 1992 7 1991 6
#  
# $`1993`
#集团年度价值i.年度价值i
#1:a 1993 3 1991 1
#2:c 1993 8 1991 6
#  
# $`1994`
#集团年度价值i.年度价值i
#1:c 1994 9 1991 6

我不完全清楚您想要的输出是什么,但我更喜欢一个数据帧列表,稍后可以将其附加在一起

注意:这可能超出了您的需要,因为其他答案只是根据
Year
列的子集中的值筛选行

库(data.table)
Lappy(分割数据帧(df,df$年),
函数(x)不带省略(setDT(x)[setDT(df[df$Year='1991',]),
on=(组)])
# $`1991`
#集团年度价值i.年度价值i
#1:a 1991 1 1991 1
#2:b 1991 4 1991 4
#3:c 1991 6 1991 6
#  
# $`1992`
#集团年度价值i.年度价值i
#1:b 1992 5 1991 4
#2:c 1992 7 1991 6
#  
# $`1993`
#集团年度价值i.年度价值i
#1:a 1993 3 1991 1
#2:c 1993 8 1991 6
#  
# $`1994`
#集团年度价值i.年度价值i
#1:c 1994 9 1991 6