R:尝试计算均值和 sd + 警告在数据框 header 中列出 object 时无法找到 object
R: trying to calculate means and sd + warning that object cannot be found while the object is listed in the data frame header
我是 R 的新手,我很难计算单列的均值。 RStudio returns 对几种不同可能性的相同警告(在下面进一步描述)。我已经搜索了现有的问题,但要么这些问题没有问到我要搜索的内容,要么解决方案不适用于我的数据。
我的数据有不同的研究作为行,研究质量评级有多个 sub-points 作为列。
简化版本如下所示:
> dd <- data.frame(authoryear = c("Smith, 2020", "Meyer, 2019", "Lim, 2019", "Lowe, 2018"),
+ stqu1 = c(1, 3, 2, 4),
+ stqu2 = c(8, 3, 9, 9),
+ stqu3 = c(1, 1, 1, 2))
> dd
authoryear stqu1 stqu2 stqu3
1 Smith, 2020 1 8 1
2 Meyer, 2019 3 3 1
3 Lim, 2019 2 9 1
4 Lowe, 2018 4 9 2
我通过 rowSums 计算了每项研究的研究质量评分总和,并在我的数据框中创建了一个名为“stqu_sum”的新列。
像这样:
dd$stqu_sum <- rowSums(subset(dd, select = c(stqu1, stqu2, stqu3)), na.rm = TRUE)
现在我想计算所有研究(行)的 stqu_sum 的均值和标准差。我在谷歌上搜索并找到了许多不同的方法来执行此操作,但无论我尝试什么,我都会收到相同的警告,但我不知道如何解决。
我尝试过的事情:
#defining stqu_sum as numeric
dd[, stqu_sum := as.numeric(stqu_sum)]
#colMeans
colMeans(dd, select = stqu_sum, na.rm = TRUE)
#sapply
sapply(dd, function(dd) c( "Stand dev" = sd(stqu_sum),
"Mean"= mean(stqu_sum,na.rm=TRUE),
"n" = length(stqu_sum),
"Median" = median(stqu_sum),
))
#data.table
dd[, .(mean_stqu = mean("stqu_sum"), sd_stqu = sd("stqu_sum")),.(variable, value)]
所有这些都返回警告:object stqu_sum 未找到。但是,stqu_sum 列显示在我的数据框的 header 中,如上所示。
谁能帮我解决这个问题或告诉我另一种方法来解决这个问题?
我希望这足够详细。如果我应该添加任何信息,请告诉我。
提前致谢!
这就是你想要的吗? stqu_sum 的平均值和标准差:
dd_summary <- dd %>%
summarise(mean=mean(stqu_sum),
SD = sd(stqu_sum))
给出:
> dd_summary
mean SD
1 11 3.366502
使用data.table
,我们不需要引用列名
library(data.table)
dd[, .(mean_stqu = mean(stqu_sum), sd_stqu = sd(stqu_sum)),.(variable, value)]
我是 R 的新手,我很难计算单列的均值。 RStudio returns 对几种不同可能性的相同警告(在下面进一步描述)。我已经搜索了现有的问题,但要么这些问题没有问到我要搜索的内容,要么解决方案不适用于我的数据。
我的数据有不同的研究作为行,研究质量评级有多个 sub-points 作为列。 简化版本如下所示:
> dd <- data.frame(authoryear = c("Smith, 2020", "Meyer, 2019", "Lim, 2019", "Lowe, 2018"),
+ stqu1 = c(1, 3, 2, 4),
+ stqu2 = c(8, 3, 9, 9),
+ stqu3 = c(1, 1, 1, 2))
> dd
authoryear stqu1 stqu2 stqu3
1 Smith, 2020 1 8 1
2 Meyer, 2019 3 3 1
3 Lim, 2019 2 9 1
4 Lowe, 2018 4 9 2
我通过 rowSums 计算了每项研究的研究质量评分总和,并在我的数据框中创建了一个名为“stqu_sum”的新列。 像这样:
dd$stqu_sum <- rowSums(subset(dd, select = c(stqu1, stqu2, stqu3)), na.rm = TRUE)
现在我想计算所有研究(行)的 stqu_sum 的均值和标准差。我在谷歌上搜索并找到了许多不同的方法来执行此操作,但无论我尝试什么,我都会收到相同的警告,但我不知道如何解决。
我尝试过的事情:
#defining stqu_sum as numeric
dd[, stqu_sum := as.numeric(stqu_sum)]
#colMeans
colMeans(dd, select = stqu_sum, na.rm = TRUE)
#sapply
sapply(dd, function(dd) c( "Stand dev" = sd(stqu_sum),
"Mean"= mean(stqu_sum,na.rm=TRUE),
"n" = length(stqu_sum),
"Median" = median(stqu_sum),
))
#data.table
dd[, .(mean_stqu = mean("stqu_sum"), sd_stqu = sd("stqu_sum")),.(variable, value)]
所有这些都返回警告:object stqu_sum 未找到。但是,stqu_sum 列显示在我的数据框的 header 中,如上所示。
谁能帮我解决这个问题或告诉我另一种方法来解决这个问题? 我希望这足够详细。如果我应该添加任何信息,请告诉我。 提前致谢!
这就是你想要的吗? stqu_sum 的平均值和标准差:
dd_summary <- dd %>%
summarise(mean=mean(stqu_sum),
SD = sd(stqu_sum))
给出:
> dd_summary
mean SD
1 11 3.366502
使用data.table
,我们不需要引用列名
library(data.table)
dd[, .(mean_stqu = mean(stqu_sum), sd_stqu = sd(stqu_sum)),.(variable, value)]