如何使用 dplyr 基于变量级别求和?
How to sum based on variable level using dplyr?
我有一个包含一些运动表现数据的数据集。下面是一个小例子。
Player.Name Period.Name Average.Distance Total.HIR V6.Distance Date
Player 1 Quarter 1 2240.744 588.31 84.42 2/3/18
Player 2 Quarter 1 3008.554 833.94 10.50 2/3/18
Player 3 Quarter 1 2907.660 1020.78 58.52 2/3/18
Player 1 Quarter 2 2747.222 903.37 82.41 2/3/18
Player 2 Quarter 2 2225.836 679.79 31.32 2/3/18
Player 3 Quarter 2 3445.327 1034.16 108.20 2/3/18
我正在尝试使用 dplyr 对 Average.Distance
、Total.HIR
和 V6.Distance
中的每个 Quarter 1
和 Quarter 2
求和。我想按 Player.Name
和 Date
对其进行分组,注意我的数据集中有很多日期 (matchdb2018
)。这是我到目前为止的代码:
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
我不确定如何继续下一行代码以及如何根据变量的水平求和。
任何帮助将不胜感激。
所以我认为在您的情况下,dplyr 中的 summarise() 将是您的最佳选择。您可以执行以下操作。
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
summarise(col1=sum(Average.Distance),col2=sum(Total.HIR),col3=sum(V6.Distance))
此代码可让您查看 Average.Distance、Total.HIR 和 V6.Distance 的总和 player-name 以及日期。
这将为您完成工作,您可能希望保留为数据框而不是 tibble 对象。
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
summarise(tot_dist=sum(Average.Distance),tot_hir=sum(Total.HIR),tot_v6=sum(V6.Distance))%>%
as.data.frame()
您可以使用summarise_at
df %>%
group_by(Date, Player.Name) %>%
summarize_at(c("Average.Distance", "Total.HIR", "V6.Distance"), sum)
或者您可以先取消选择 Period.Name
(因为它不是数字)并使用 summarize_all
... 节省一些输入。
df %>%
group_by(Date, Player.Name) %>%
select(-Period.Name) %>%
summarize_all(sum)
我有一个包含一些运动表现数据的数据集。下面是一个小例子。
Player.Name Period.Name Average.Distance Total.HIR V6.Distance Date
Player 1 Quarter 1 2240.744 588.31 84.42 2/3/18
Player 2 Quarter 1 3008.554 833.94 10.50 2/3/18
Player 3 Quarter 1 2907.660 1020.78 58.52 2/3/18
Player 1 Quarter 2 2747.222 903.37 82.41 2/3/18
Player 2 Quarter 2 2225.836 679.79 31.32 2/3/18
Player 3 Quarter 2 3445.327 1034.16 108.20 2/3/18
我正在尝试使用 dplyr 对 Average.Distance
、Total.HIR
和 V6.Distance
中的每个 Quarter 1
和 Quarter 2
求和。我想按 Player.Name
和 Date
对其进行分组,注意我的数据集中有很多日期 (matchdb2018
)。这是我到目前为止的代码:
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
我不确定如何继续下一行代码以及如何根据变量的水平求和。
任何帮助将不胜感激。
所以我认为在您的情况下,dplyr 中的 summarise() 将是您的最佳选择。您可以执行以下操作。
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
summarise(col1=sum(Average.Distance),col2=sum(Total.HIR),col3=sum(V6.Distance))
此代码可让您查看 Average.Distance、Total.HIR 和 V6.Distance 的总和 player-name 以及日期。
这将为您完成工作,您可能希望保留为数据框而不是 tibble 对象。
library(dplyr)
summary <- matchdb2018 %>%
group_by(Player.Name, Date) %>%
summarise(tot_dist=sum(Average.Distance),tot_hir=sum(Total.HIR),tot_v6=sum(V6.Distance))%>%
as.data.frame()
您可以使用summarise_at
df %>%
group_by(Date, Player.Name) %>%
summarize_at(c("Average.Distance", "Total.HIR", "V6.Distance"), sum)
或者您可以先取消选择 Period.Name
(因为它不是数字)并使用 summarize_all
... 节省一些输入。
df %>%
group_by(Date, Player.Name) %>%
select(-Period.Name) %>%
summarize_all(sum)