r - 用单个统计值表征 R 中的水果收获时间
问题描述
如果我的问题听起来很简单,我对此很抱歉。这是我的问题:
我正在研究水果收获时间数据,目标是获得有意义的单一值来比较不同品种的时间。树木在几周内收获,所以如果你绘制每周每个品种的产量,你会得到一些可以同化为正态分布的东西。
我的想法是获取数周内收获分布的统计值。
我正在考虑的值是quartiles、IQR(四分位间距)、kurtosis、skewness等……但我只是很难在 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
...
谢谢
解决方案
假设您的数据框看起来像这样
> 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
推荐阅读
- c# - 在 LINQ 中选择方法并将 int 转换为字符串值
- visual-studio-code - 带有 Dendron 和引文的 VSCode
- google-analytics - GA4 测量协议 IP 覆盖
- powershell - 测试路径删除项目问题
- java - Kafka Producer 应该重用还是短命?
- python - 如何使用 OpenCV 获取图像上某个点的坐标?
- javascript - 使用 javascript 验证并提交 html 表单所需的输入
- excel - 文本框事件更改后日期加起来错误
- mysql - 如何使用 XML 在 SQL 中将列默认值设置为今天的日期
- github - GitHub Actions 创建或更新 Git 标签