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)]