使用循环

时间:2018-02-17 06:03:45

标签: r

我是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)

我的最终目标是能够上传数据文件并通过代码运行,然后输出给定变量的四分位数,均值,中位数和标准差。

非常感谢任何指导。谢谢

1 个答案:

答案 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]