R - 频率分布的中位数,由另一个变量分组
R - Median of a Frequency distribution, grouped by another variable
我的数据集如下所示:http://i.imgur.com/OdiLf4t.png
姓名 |状态 |邮政编码 | County_name |平均付款 |频率
我想要的输出是按州分组,并使用平均付款和频率列获得中位数付款。
我知道如何对整个数据集执行此操作
median(rep(Clean$medicare_average_payment, Clean$Frequency))
但不确定州如何执行此操作
谢谢
我们可以试试dplyr
library(dplyr)
Clean1 <- Clean[rep(1:nrow(Clean), Clean$Frequency),]
Clean1 %>%
group_by(State) %>%
summarise(Median = median(medicare_average_payment))
或使用data.table
library(data.table)
setDT(Clean)[, .(Median = median(rep(medicare_average_payment, Frequency))) , State]
您可以使用by
分割数据框并对每一块执行此功能:
by(Clean, Clean$State,
FUN=function(x) median(rep(x$medicare_average_payment, x$Frequency))
)
我的数据集如下所示:http://i.imgur.com/OdiLf4t.png
姓名 |状态 |邮政编码 | County_name |平均付款 |频率
我想要的输出是按州分组,并使用平均付款和频率列获得中位数付款。
我知道如何对整个数据集执行此操作
median(rep(Clean$medicare_average_payment, Clean$Frequency))
但不确定州如何执行此操作 谢谢
我们可以试试dplyr
library(dplyr)
Clean1 <- Clean[rep(1:nrow(Clean), Clean$Frequency),]
Clean1 %>%
group_by(State) %>%
summarise(Median = median(medicare_average_payment))
或使用data.table
library(data.table)
setDT(Clean)[, .(Median = median(rep(medicare_average_payment, Frequency))) , State]
您可以使用by
分割数据框并对每一块执行此功能:
by(Clean, Clean$State,
FUN=function(x) median(rep(x$medicare_average_payment, x$Frequency))
)