r - 如何在R中选择一系列列
问题描述
我有一些数据,只想计算mean
,sd
等var
。我的问题不是功能而是列,我似乎不知道如何选择它们。
所以第一列包括动物的名字和第 2 到 11 列我的数字数据。列名是X1
to 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
。
我想这很简单,但我只是坚持下去。非常感谢您的帮助。
解决方案
您可能想使用应用功能。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)
让我知道我在这里所说的任何事情对你来说是不清楚的。一切顺利