這感覺就像它不應該很難,但我一直在爭取它,卻無法找到符合我想我會問的答案。找到平均值最大的因素爲範圍
我有一個數據集,我想分解一個因子列,然後取平均值。這很容易。複雜的是,我想進一步限制這個意思只有在第二列的最大值的一定範圍內的值。
作爲一個例子,使用mtcars
,我想平均hp
,drat
& wt
由氣缸(cyl
)分組,並且內的最大位移(disp
)的50cc的的。
使用aggregate
子集參數不適用於每個子集,它適用於整個數據集。所以,我們只能得到8缸汽車的正確平均,而不是4或6
aggregate(data=mtcars, cbind(hp, drat, wt) ~ factor(cyl), FUN=mean, subset=c(disp<=max(disp) & disp>=max(disp)-50))
#factor(cyl) hp drat wt
#1 8 216.6667 3.053333 5.339667
使用by
產生警告和NA
by(data=mtcars, mtcars$cyl, function(x) mean(subset(x, disp<=max(disp) & disp>=max(disp)-50), select = hp:wt))
Warning messages:
1: In mean.default(subset(x, disp <= max(disp) & disp >= max(disp) - :
argument is not numeric or logical: returning NA
我清楚地失去了一些東西。我正在尋找的是爲每個氣缸(4,6,8)返回一個數據幀,併爲每個氣缸排列前50cc的汽車的平均值爲hp,drat和wt。
謝謝!我必須找到時間學習'dplyr'。 – JHegg
RStudio dplyr和tidyr備忘單是一個很好的起點 –