R 分组,以查找每个组的最大值,然后统计每年具有最大值的组

R 分组,以查找每个组的最大值,然后统计每年具有最大值的组,r,dplyr,group-by,R,Dplyr,Group By,我试图根据变量的最大值对变量进行分组,然后计算在某个时间段内具有最大值的组的数量 数据集如下所示: 年 汽车 价值 1991 A. 21 1992 A. 19 1993 A. 20 1992 B 42 1993 B 17 1991 C 31 1992 C 50 1993 C 23 示例输出与示例数据不匹配,但这可能就是您要查找的 首先,按Car对_进行分组,并确定该特定汽车的最大值。然后,您可以按年份对车辆进行分组,并使用n\u distinct计算唯一车辆的数量,其中值等于最大值 librar

我试图根据变量的最大值对变量进行分组,然后计算在某个时间段内具有最大值的组的数量

数据集如下所示:

年 汽车 价值 1991 A. 21 1992 A. 19 1993 A. 20 1992 B 42 1993 B 17 1991 C 31 1992 C 50 1993 C 23
示例输出与示例数据不匹配,但这可能就是您要查找的

首先,
Car对_进行分组,并确定该特定汽车的最大值。然后,您可以
年份对车辆进行分组,并使用
n\u distinct
计算唯一车辆的数量,其中
等于最大值

library(dplyr)

df %>%
  group_by(Car) %>%
  mutate(Max_Value = max(Value)) %>%
  group_by(Year) %>%
  summarise(Count = n_distinct(Car[Value == Max_Value]))
输出

   Year Count
  <int> <int>
1  1991     0
2  1992     3
3  1993     0
年份计数
1  1991     0
2  1992     3
3  1993     0

示例输出与示例数据不匹配,但这可能就是您要查找的内容

首先,
Car对_进行分组,并确定该特定汽车的最大值。然后,您可以
年份对车辆进行分组,并使用
n\u distinct
计算唯一车辆的数量,其中
等于最大值

library(dplyr)

df %>%
  group_by(Car) %>%
  mutate(Max_Value = max(Value)) %>%
  group_by(Year) %>%
  summarise(Count = n_distinct(Car[Value == Max_Value]))
输出

   Year Count
  <int> <int>
1  1991     0
2  1992     3
3  1993     0
年份计数
1  1991     0
2  1992     3
3  1993     0

非常接近本的密码!不带
n\u distinct

df1 <- df %>% 
  group_by(Car) %>%  
  mutate(mx = max(Value)) %>% 
  ungroup() %>% 
  group_by(Year) %>% 
  summarise(count=sum(Value >= mx))
df1%
组别(汽车)%>%
变异(mx=最大值))%>%
解组()%>%
组别(年份)%>%
总结(计数=总和(值>=mx))

非常接近本的密码!不带
n\u distinct

df1 <- df %>% 
  group_by(Car) %>%  
  mutate(mx = max(Value)) %>% 
  ungroup() %>% 
  group_by(Year) %>% 
  summarise(count=sum(Value >= mx))
df1%
组别(汽车)%>%
变异(mx=最大值))%>%
解组()%>%
组别(年份)%>%
总结(计数=总和(值>=mx))

另一种
dplyr
方式:

在每个
年和
计数中仅保留最大

library(dplyr)

df %>%
  mutate(Year = factor(Year)) %>%
  group_by(Car) %>%
  slice(which.max(Value)) %>%
  ungroup %>%
  count(Year, .drop = FALSE)

#  Year      n
#* <fct> <int>
#1 1991      0
#2 1992      3
#3 1993      0
库(dplyr)
df%>%
突变(年=因子(年))%>%
组别(汽车)%>%
切片(哪个.max(值))%>%
解组%>%
计数(年份,.drop=FALSE)
#年
#*  
#1 1991      0
#2 1992      3
#3 1993      0

另一种
dplyr
方式:

在每个
年和
计数中仅保留最大

library(dplyr)

df %>%
  mutate(Year = factor(Year)) %>%
  group_by(Car) %>%
  slice(which.max(Value)) %>%
  ungroup %>%
  count(Year, .drop = FALSE)

#  Year      n
#* <fct> <int>
#1 1991      0
#2 1992      3
#3 1993      0
库(dplyr)
df%>%
突变(年=因子(年))%>%
组别(汽车)%>%
切片(哪个.max(值))%>%
解组%>%
计数(年份,.drop=FALSE)
#年
#*  
#1 1991      0
#2 1992      3
#3 1993      0

在您的样本数据集中,所有汽车在1992年都有其最大值,但预期结果并未反映这一点。请你澄清一下,谢谢。另一个问题:如果一辆车在一年多的时间内达到最大值,例如,a车在1991年和1992年的值为21,那么预期的答案是什么?@Uwe:好问题!在这种情况下,我希望计算这两个年份。在您的样本数据集中,所有汽车在1992年都有其最大值,但预期结果并不反映这一点。请你澄清一下,谢谢。另一个问题:如果一辆车在一年多的时间内达到最大值,例如,a车在1991年和1992年的值为21,那么预期的答案是什么?@Uwe:好问题!在这种情况下,我希望这两个年份都计算在内。