首页 > 解决方案 > 用单个统计值表征 R 中的水果收获时间

问题描述

如果我的问题听起来很简单,我对此很抱歉。这是我的问题:

我正在研究水果收获时间数据,目标是获得有意义的单一值来比较不同品种的时间。树木在几周内收获,所以如果你绘制每周每个品种的产量,你会得到一些可以同化为正态分布的东西。

我的想法是获取数周内收获分布的统计值

我正在考虑的值是quartilesIQR(四分位间距)、kurtosisskewness等……但我只是很难在 R 中接近它。

我的数据如下所示:

cultivar, week , year , yield
var x, week 10 , year 1 , 600 grams
var y, week 10 , year 1 , 850 grams
var x, week 13 , year 1 , 1000 grams
var y, week 14 , year 1 , 1200 grams
var x, week 15 , year 1 , 700 grams
var y, week 16 , year 1 , 1000 grams
var x, week 10 , year 2 , 500 grams
var y, week 10 , year 2 , 700 grams
var x, week 13 , year 2 , 1300 grams
...  

谢谢

标签: r

解决方案


假设您的数据框看起来像这样

> df
  cultivar      week     year       yield
1    var x  week 10   year 1    600 grams
2    var y  week 10   year 1    850 grams
3    var x  week 13   year 1   1000 grams
4    var y  week 14   year 1   1200 grams
5    var x  week 15   year 1    700 grams
6    var y  week 16   year 1   1000 grams
7    var x  week 10   year 2    500 grams
8    var y  week 10   year 2    700 grams
9    var x  week 13   year 2   1300 grams

您可以从 R 的summary函数中获取分位数。但是,您需要一个额外的包来计算峰度和偏度。首先,在 R 控制台中键入以下命令。

install.packages("moments")

然后你可以运行以下脚本

library(moments)

df$yield <- as.numeric(sub(" grams", "", df$yield)) # convert `yield` into a numeric vector
aggregate(
  yield ~ cultivar, data = df, 
  function(x) c(summary(x), skewness = skewness(x), kurtosis = kurtosis(x))
)

输出

  cultivar   yield.Min. yield.1st Qu. yield.Median   yield.Mean yield.3rd Qu.   yield.Max. yield.skewness yield.kurtosis
1    var x  500.0000000   600.0000000  700.0000000  820.0000000  1000.0000000 1300.0000000      0.5692290      1.8333916
2    var y  700.0000000   812.5000000  925.0000000  937.5000000  1050.0000000 1200.0000000      0.1684715      1.7088259

推荐阅读