R.在R中查找按子集分组的汇总统计信息
我在R中有一个巨大的数据集。每个观测值都有一个分类标签,在这个例子中有一个数值,一个质量 我正在寻找按每个子集标签分组的质量值的汇总统计数据(平均值、中位数、模式) 我完全被难倒了,所以任何帮助都将不胜感激 数据的一个片段是R.在R中查找按子集分组的汇总统计信息,r,R,我在R中有一个巨大的数据集。每个观测值都有一个分类标签,在这个例子中有一个数值,一个质量 我正在寻找按每个子集标签分组的质量值的汇总统计数据(平均值、中位数、模式) 我完全被难倒了,所以任何帮助都将不胜感激 数据的一个片段是 Order_or_higher First_appearance_mya Last_appearance_mya Mass_kg Rodentia -13.9 -11.3 0.006665867 Rodentia -11.8 -7.5
Order_or_higher First_appearance_mya Last_appearance_mya Mass_kg
Rodentia -13.9 -11.3 0.006665867
Rodentia -11.8 -7.5 0.005259311
Rodentia -14.4 -14.4 0.036379302
Rodentia -16.7 -13.7 0.056373546
Rodentia -14.1 -14.1 0.008149854
Rodentia -28.4 -20.3 0.009393331
Rodentia -2.4 -2.4 0.02126367
Rodentia -0.9 0 0.014909521
Rodentia -3.8 -3.7 0.027798999
Rodentia -2.8 -0.5 0.01889694
Rodentia -1.6 -1.6 0.017115766
Carnivora -5.8 -5.7 63.51300709
Carnivora -17.4 -14.5 281.8132792
Carnivora -20.1 -15.5 130.4832311
dplyr包有更多的分类值,具有这些功能,是为这些任务而设计的 假设
d
是您的数据集
d %>%
group_by(<subset>) %>%
summarise(mean = mean(<mass>),
median = median(<mass>),
mode = ModeFunction(<mass>))
d%>%
分组依据()%>%
总结(平均值=平均值(),
中位数=中位数(),
mode=ModeFunction())
您可以定义一个函数来声明
ModeFunction
。hpesoj626的函数运行良好且简单。有很多方法,您可以在R中实现这一点。下面是使用tidyverse
的一种方法。但首先,请注意R中的函数mode()
不会返回模式估计值。要了解有关mode()
功能的更多信息,请在控制台中键入?mode
。所以我们必须创建一个返回模式的函数。显然,我们可以从table()
函数开始,因为它返回table(x)
中x
的频率分布
模式除非您提供一个明确的dataDone示例,添加dataWhat are%%>%意味着什么?@DanielV,函数模式
不会返回统计模式估计值。:)@需要帮助%>%函数的人被称为“管道函数”。它将前一个函数的结果作为其第一个参数传递给下一个函数。
Mode <- function(x) {
uniqx <- unique(x)
uniqx[which.max(table(x))]
}
tt <- "Rodentia -13.9 -11.3 0.006665867
Rodentia -11.8 -7.5 0.005259311
Rodentia -14.4 -14.4 0.036379302
Rodentia -16.7 -13.7 0.056373546
Rodentia -14.1 -14.1 0.008149854
Rodentia -28.4 -20.3 0.009393331
Rodentia -2.4 -2.4 0.02126367
Rodentia -0.9 0 0.014909521
Rodentia -3.8 -3.7 0.027798999
Rodentia -2.8 -0.5 0.01889694
Rodentia -1.6 -1.6 0.017115766
Carnivora -5.8 -5.7 63.51300709
Carnivora -17.4 -14.5 281.8132792
Carnivora -20.1 -15.5 130.4832311"
df <- read.table(text = tt, header = F)
library(tidyverse)
df %>%
group_by(V1) %>%
summarise_at(vars(V2:V4), funs(mean, median, Mode))
# V1 V2_mean V3_mean V4_mean V2_median V3_median V4_median V2_Mode V3_Mode V4_Mode
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 Carniv… -14.4 -11.9 1.59e+2 -17.4 -14.5 130. -5.80 -5.70 6.35e+1
# 2 Rodent… -10.1 -8.14 2.02e-2 -11.8 -7.50 0.0171 -13.9 -11.3 6.67e-3