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