【发布时间】:2021-03-22 16:52:06
【问题描述】:
我正在尝试根据 data.frame 中的组计算均值和标准差。
| Sample | Widht | Weight | Length |
|---|---|---|---|
| A1.1 | 3.5 | 6.7 | 5.8 |
| 8.3 | 4.2 | 6.3 | 5.5 |
| A1.1 | 2.9 | 5.7 | 5.1 |
| 8.3 | 3.7 | 6.1 | 5.4 |
我一直在尝试使用此代码根据样本计算每列的均值和标准差。我在实际数据框中还有更多列,但所有列都应根据示例列计算。
agdf<- aggregate(d.f, by=list(d.f$sample), function(x) c(mean = mean(x, na.rm=TRUE), sd = sd(x, na.rm=TRUE)))
当我尝试这个命令时,我得到这个错误信息:
Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) :
Calling var(x) on a factor x is defunct.
Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
我检查了每一列的类别,“样本”列是一个因素,而其他列是数字。我对 R 很陌生,我真的不明白出了什么问题以及如何解决它。我真的很感激一些想法/帮助。谢谢。
【问题讨论】:
-
请提供您的数据框的
dput(d.f)以获得帮助者/回答者的帮助 -
请注意,在您的代码中,您正在编写带有小写“s”的
sample列,而在您的屏幕截图中,它似乎是大写的 - 这是 R 中的差异。 -
agdf <- aggregate(.~sample, d.f, function(x) c(mean = mean(x, na.rm = TRUE), sd = sd(x, na.rm = TRUE)))
标签: r aggregate average reshape standard-deviation