如何获得平均值,以及如何将平均值包含在数字数据的绘图中
How to get the mean, and, include mean to a plot for numeric data
我是 R 用户的新手,已查看网站上的相关问题。虽然在我遇到一些我无法解决的其他问题之前已经问过我的问题标题。
我能够成功使用 R 控制台使用我通过 .csv 导入的数据制作箱线图,其中包括一些 NA 值(使用 boxplot(Test)
),其中测试是我的数据的名称,包括 3 列数据,每列带有 20 个数据点的标签。
但是当我尝试计算平均值(通过使用:mean(Test)
或尝试将其添加到成功制作的箱线图(通过使用:abline(v=mean(Test)
)时,它给了我以下警告消息:
Warning message:
In mean.default(Test) : argument is not numeric or logical: returning NA
现在,当我尝试时:sapply(Test, mean, na.rm = TRUE)
,我确实得到了正确的结果,但随后出现了警告消息:
Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA
使用时所有正确的计算都出来了:Summary (Test)
没有任何警告信息。 我对问题出在哪里感到困惑?任何建议都会有帮助!谢谢
更新2:
感谢您在下面的回答,效果很好。
更新 1:
感谢那些在下面提供帮助的人 - 使用 colMeans(Test, na.rm=TRUE)
returns 我所有专栏的方法。 但是,是否可以将每个单独数据列的平均值作为一个点添加到所有数据(即所有三列)的箱线图中?使用 abline(v=colMeans(Test))
只会在整个图中添加一条线。
附加信息:
当我使用:class(Test)
它 returns:
[1] "data.frame"
我还使用 sapply(Test, mode)
检查了我的数据类型(如果我使用了任何不正确的词,我深表歉意)并且它 returns "numeric" for我数据的所有 3 列。
仅部分数据集
a b c
0.68 0.68 0.68
0.28 0.28 0.28
0.62 0.62 0.62
0.73 0.73 0.73
下面是一个示例,说明如何使用三个数值变量创建箱线图,并用每个变量的平均值添加点。
#Create example data, including some NA values
set.seed(13121)
test = data.frame(a = c(rnorm(99, 1, 1), NA),
b = c(NA, rnorm(99, 0, 1)),
c = rnorm(100, 2, 2))
#Calculate means for each of the columns
means = colMeans(test)
前两列的结果returns NA
,因为其中有NA
个值:
means
# a b c
# NA NA 2.021736
解决方案是添加na.rm = TRUE
选项(更多信息参见?colMeans
):
means = colMeans(test, na.rm = TRUE)
means
# a b c
# 0.9843446 -0.1428516 2.0217361
现在我们已准备好绘制箱线图并使用计算均值添加点:
boxplot(test)
points(means, col = "red")
结果:
我是 R 用户的新手,已查看网站上的相关问题。虽然在我遇到一些我无法解决的其他问题之前已经问过我的问题标题。
我能够成功使用 R 控制台使用我通过 .csv 导入的数据制作箱线图,其中包括一些 NA 值(使用 boxplot(Test)
),其中测试是我的数据的名称,包括 3 列数据,每列带有 20 个数据点的标签。
但是当我尝试计算平均值(通过使用:mean(Test)
或尝试将其添加到成功制作的箱线图(通过使用:abline(v=mean(Test)
)时,它给了我以下警告消息:
Warning message:
In mean.default(Test) : argument is not numeric or logical: returning NA
现在,当我尝试时:sapply(Test, mean, na.rm = TRUE)
,我确实得到了正确的结果,但随后出现了警告消息:
Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA
使用时所有正确的计算都出来了:Summary (Test)
没有任何警告信息。 我对问题出在哪里感到困惑?任何建议都会有帮助!谢谢
更新2: 感谢您在下面的回答,效果很好。
更新 1:
感谢那些在下面提供帮助的人 - 使用 colMeans(Test, na.rm=TRUE)
returns 我所有专栏的方法。 但是,是否可以将每个单独数据列的平均值作为一个点添加到所有数据(即所有三列)的箱线图中?使用 abline(v=colMeans(Test))
只会在整个图中添加一条线。
附加信息:
当我使用:class(Test)
它 returns:
[1] "data.frame"
我还使用 sapply(Test, mode)
检查了我的数据类型(如果我使用了任何不正确的词,我深表歉意)并且它 returns "numeric" for我数据的所有 3 列。
仅部分数据集
a b c
0.68 0.68 0.68
0.28 0.28 0.28
0.62 0.62 0.62
0.73 0.73 0.73
下面是一个示例,说明如何使用三个数值变量创建箱线图,并用每个变量的平均值添加点。
#Create example data, including some NA values
set.seed(13121)
test = data.frame(a = c(rnorm(99, 1, 1), NA),
b = c(NA, rnorm(99, 0, 1)),
c = rnorm(100, 2, 2))
#Calculate means for each of the columns
means = colMeans(test)
前两列的结果returns NA
,因为其中有NA
个值:
means
# a b c
# NA NA 2.021736
解决方案是添加na.rm = TRUE
选项(更多信息参见?colMeans
):
means = colMeans(test, na.rm = TRUE)
means
# a b c
# 0.9843446 -0.1428516 2.0217361
现在我们已准备好绘制箱线图并使用计算均值添加点:
boxplot(test)
points(means, col = "red")
结果: