是否有R函数用于选择与相邻列中的ID相关联的一列中的最大值?
这是我正在使用的一个示例。hh_p_id是一个人,tdtrpnum识别他们每天的每次旅行,我想找出每人每天的平均旅行次数。首先,我想将每个个体的最高值分开(可能是过滤?)。我该怎么做是否有R函数用于选择与相邻列中的ID相关联的一列中的最大值?,r,dplyr,R,Dplyr,这是我正在使用的一个示例。hh_p_id是一个人,tdtrpnum识别他们每天的每次旅行,我想找出每人每天的平均旅行次数。首先,我想将每个个体的最高值分开(可能是过滤?)。我该怎么做 如果my\u data是您的数据框,则: my_data <- my_data %>% group_by(hh_p_id) %>% summarise(avg_per_day = n() / length(unique(date)) my_数据% 分组依据(hh\U p\U id)%>%
如果
my\u data
是您的数据框,则:
my_data <- my_data %>%
group_by(hh_p_id) %>%
summarise(avg_per_day = n() / length(unique(date))
my_数据%
分组依据(hh\U p\U id)%>%
总结(平均每天=n()/长度(唯一(日期))
将为hh_p_id列提供每天的平均出行次数如果您想计算每人的最小、最大和平均出行次数,这里有一个使用dplyr的解决方案
library(magrittr)
# some sample data
data <- dplyr::tibble(ID=sample(1:10,size=1000,replace=T),
DATE=sample(1:20,size=1000,replace=T) %>%
as.Date(origin="2020-01-01")) %>%
dplyr::group_by(ID,DATE) %>%
dplyr::summarise(CNT=dplyr::n())
# solution to your problem
data %>%
dplyr::group_by(ID) %>%
dplyr::summarise(AVG=sum(CNT)/dplyr::n(),
MAX=max(CNT),
MIN=min(CNT))
库(magrittr)
#一些样本数据
数据%
截止日期(origin=“2020-01-01”))%>%
dplyr::分组依据(ID,日期)%>%
dplyr::summary(CNT=dplyr::n())
#解决你的问题
数据%>%
dplyr::分组依据(ID)%>%
dplyr::summary(平均=总和(CNT)/dplyr::n(),
最大值=最大值(CNT),
最小值=最小值(CNT))
您可以使用data.table。类似于dt[,which.max(tdtrpnum),by=hh\u p\u id]