我是R的新手,我正试图想出一种方法来对我的数据集进行子集化,而无需为每个子集编写一行代码。我的数据集有多年,我每年都会尝试分组。列“年”有5个不同年份2017,2016,2015,2014,2013。我目前做的是这个(数据集是我的原始数据):
Year17 <- dataset[dataset$Year=="2017",]
Year16 <- dataset[dataset$Year=="2016",]
Year15 <- dataset[dataset$Year=="2015",]
Year14 <- dataset[dataset$Year=="2014",]
Year13 <- dataset[dataset$Year=="2013",]
我认为有一些方法可以解决这个问题,但我还是无法弄清楚如何。
然后我也在寻找提取四分位数,模式,中位数和标准差的方法。我目前正在这样做:
Year17Finance <- quantile(Year17$Financials, probs= c(0.10, 0.25, 0.50, 0.75, 0.90), na.rm = T)
Year17Sales <- quantile(Year17$Sales, probs= c(0.10, 0.25, 0.50, 0.75, 0.90), na.rm = T)
mean(Year17$Financials, na.rm = T)
median(Year17$Financials,na.rm = T)
sd(Year17$Financials, na.rm = T)
我的最终目标是能够上传数据文件并通过代码运行,然后输出给定变量的四分位数,均值,中位数和标准差。
非常感谢任何指导。谢谢
答案 0 :(得分:2)
我假设您正在创建每个子集化数据框,以便您可以计算每年的摘要统计数据?对于这类问题,我喜欢data.table包,它允许您在组列中拆分计算:
library(data.table)
dataset <- as.data.table(dataset)
financial_summary_stats <- dataset[, list(
q10 = quantile(Financials, 0.10, na.rm=TRUE),
q25 = quantile(Financials, 0.25, na.rm=TRUE),
q50 = quantile(Financials, 0.50, na.rm=TRUE),
mean = mean(Financials, na.rm=TRUE),
q75 = quantile(Financials, 0.75, na.rm=TRUE),
q90 = quantile(Financials, 0.90, na.rm=TRUE)
), by = Year]