R 如何解决聚合SD函数中的错误消息?
我试图运行一个聚合SD函数,但收到了一条无法解析的错误消息,或者收到了无法工作的输出。我包括示例数据——目标是在更大的数据集上运行,但我甚至无法让聚合函数处理这三列R 如何解决聚合SD函数中的错误消息?,r,R,我试图运行一个聚合SD函数,但收到了一条无法解析的错误消息,或者收到了无法工作的输出。我包括示例数据——目标是在更大的数据集上运行,但我甚至无法让聚合函数处理这三列 dput(droplevels(controls2[1:20, 1:3])) structure(list(Experiment = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label
dput(droplevels(controls2[1:20, 1:3]))
structure(list(Experiment = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("Ceres- Clipping",
"FGI- Defoliation"), class = "factor"), Grain = c(489.9, 698.5,
430.6, 244.9, 476.5, 545.4, 570.2, 463.1, 285.1, 407.6, 244.9,
401.9, 126.3, 179.9, 382.7, 266, 653, 653, 606.6, 606.6), Environment = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L), .Label = c("Morris.1", "St. Paul.1"), class = "factor")), row.names = c(3565L,
3566L, 3567L, 3568L, 3569L, 3570L, 3571L, 3572L, 3573L, 3574L,
3575L, 3576L, 3577L, 3578L, 3579L, 3580L, 2379L, 2380L, 2381L,
2382L), class = "data.frame")
controlSDs <- aggregate(x = controls2, by = list(controls2$Experiment, controls2$Environment), FUN = "sd")
但是,我尝试在controls2$Grain
上执行的唯一列是数值列:
names(controls2)
[1] "Experiment" "Grain" "Environment"
class(controls2$Grain)
[1] "numeric"
我知道controls2$Environment
和controls2$experience
都是因子,但我以前在by=list()
命令中使用因子运行过这个命令,它已经起作用了。我还尝试了以下方法:
controlSDs <- aggregate(cbind(Experiment, Environment) ~ Grain, data = controls2, sd)
任何关于如何使这个聚合SD函数正确工作的建议都将不胜感激。我会很高兴有一个简单的解决方案,可以让我计算谷物列的SD,但理想情况下,我可以将其扩展到一个100+列的数据集,除了环境和实验列之外,该数据集是完全数字的。我在过去两周内更新了R和R Studio。我仍在学习如何提出可重复的问题,因此请告诉我是否有什么可以改进此问题的方法。您是否正在寻找此问题。指定公式时,需要在
~
左侧设置数值变量:
#Code
controlSDs <- aggregate(data = controls2,Grain~.,
FUN = sd)
根据您的尝试,这也可以起作用:
#Code2
controlSDs <- aggregate(Grain~Experiment+Environment , data = controls2, sd)
#代码2
控制SDS我们可以使用dplyr
library(dplyr)
controls2 %>%
group_by(Experiment, Environment) %>%
summarise(Grain = sd(Grain))
谢谢我不敢相信我在这个语法上犯了这么简单的错误。我最后要找的是控制系统
controlSDs
Experiment Environment Grain
1 Ceres- Clipping Morris.1 154.67734
2 FGI- Defoliation St. Paul.1 26.78905
#Code2
controlSDs <- aggregate(Grain~Experiment+Environment , data = controls2, sd)
library(dplyr)
controls2 %>%
group_by(Experiment, Environment) %>%
summarise(Grain = sd(Grain))