R编码:如何在一个数据帧中获取具有多个条件的条件和/平均值
我有一个包含公司季度数据的数据框架,并希望在两个条件下,计算所有四个季度的年平均值或总和(基于变量类型):年份和公司 例如,1984年的i公司将有一个平均存货价值和总收入,分别是基于四个不同的季度价值的1984年和1984年。我目前正在使用这些代码行-用于平均值和总和-但R不断返回“NA”,我搜索了又搜索,但似乎没有任何效果:R编码:如何在一个数据帧中获取具有多个条件的条件和/平均值,r,R,我有一个包含公司季度数据的数据框架,并希望在两个条件下,计算所有四个季度的年平均值或总和(基于变量类型):年份和公司 例如,1984年的i公司将有一个平均存货价值和总收入,分别是基于四个不同的季度价值的1984年和1984年。我目前正在使用这些代码行-用于平均值和总和-但R不断返回“NA”,我搜索了又搜索,但似乎没有任何效果: Companyi_I1984 <- with(R, mean(I [FY == "1984" & Co == "AAR CORP" ])) Companyi
Companyi_I1984 <- with(R, mean(I [FY == "1984" & Co == "AAR CORP" ]))
Companyi_REV1984 <- with(R, sum(REVQ [FY == "1984" & Co == "AAR CORP" ]))
Companyi\u I1984我们可以使用data.table
。将'data.frame'转换为'data.table'(setDT(data)
),按'year'、'company'分组,我们循环遍历.SDcols
中指定的列(.SD
),获得和SD
,以及未列出
)以获得预期的输出
library(data.table)
setDT(data)[, unlist(lapply(.SD, function(x) list(Sum=sum(x), Mean = mean(x))),
recursive=FALSE), by = .(year, company), .SDcols = IQ:CashQ]
# year company IQ.Sum IQ.Mean REVQ.Sum REVQ.Mean AssetQ.Sum AssetQ.Mean CashQ.Sum CashQ.Mean
#1: 1984 xray 36.2510271 9.0627568 -16.814705 -4.2036762 -1.218832 -0.3047081 -31.500185 -7.875046
#2: 1985 xray 7.2565640 1.8141410 -11.509279 -2.8773198 -4.900577 -1.2251443 -5.229553 -1.307388
#3: 1984 kilo 0.6851807 0.1712952 -2.022284 -0.5055711 14.593264 3.6483161 -22.693697 -5.673424
你的前一个问题有很多线索指向你需要去的地方;您可以采用任何方法,例如library(dplyr);数据%>%按(年份、公司)分组%>%总结(funs(sum,mean),-qtr)
使用文档和渐晕图。dplyr很神奇,谢谢@alistaire
library(data.table)
setDT(data)[, unlist(lapply(.SD, function(x) list(Sum=sum(x), Mean = mean(x))),
recursive=FALSE), by = .(year, company), .SDcols = IQ:CashQ]
# year company IQ.Sum IQ.Mean REVQ.Sum REVQ.Mean AssetQ.Sum AssetQ.Mean CashQ.Sum CashQ.Mean
#1: 1984 xray 36.2510271 9.0627568 -16.814705 -4.2036762 -1.218832 -0.3047081 -31.500185 -7.875046
#2: 1985 xray 7.2565640 1.8141410 -11.509279 -2.8773198 -4.900577 -1.2251443 -5.229553 -1.307388
#3: 1984 kilo 0.6851807 0.1712952 -2.022284 -0.5055711 14.593264 3.6483161 -22.693697 -5.673424