首页 > 解决方案 > 如何在R中选择一系列列

问题描述

我有一些数据,只想计算mean,sdvar。我的问题不是功能而是列,我似乎不知道如何选择它们。

所以第一列包括动物的名字和第 2 到 11 列我的数字数据。列名是X1to X10。我的数据中有很多NA

我可以很容易地为每一行计算它,但是当我把它们结合起来时,我总是得到

参数不是数字或逻辑:返回 NA

因此,例如对于平均值和我尝试的一列(+它有效)

mean(WLD1$X1, na.rm=TRUE)

对于第 2 到 11 列,我尝试了:

mean(WLD1[,c(2:11)], na.rm=TRUE)

也试过:

lapply(WLD1[,2:11], mean, na.rm=TRUE)

也试过了X1:X10
我想这很简单,但我只是坚持下去。非常感谢您的帮助。

标签: rmedian

解决方案


您可能想使用应用功能。apply 函数的作用是接受一个函数(需要计算),并针对 DataFrame 或矩阵逐列或逐行应用于每个元素。逐行和逐列设置由 MARGIN= 参数编码,您想要执行的实际计算由 FUN= 编码(显然代表函数)。因此,如果您想在预期的函数/计算中一次输入一行,那么您将选择 MARGIN=1 否则您将选择 MARGIN=2(这意味着一次将一列输入函数)。因为在您的情况下,您想要计算列号 2 到 11 的均值、sd 和 var,您将分三步完成,您是对的,我们将为所有三个语句设置 MARGIN=2,但 FUN= 将不断变化。下面是代码。

Mean_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=mean)
SD_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=sd)
Var_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=var)

让我知道我在这里所说的任何事情对你来说是不清楚的。一切顺利


推荐阅读