如何在 R 中选择一系列列
How to choose a range of columns in R
我有一些数据,只想计算mean
、sd
、var
等。我的问题不是功能而是列,我似乎无法弄清楚如何选择它们。
因此第一列包括动物的名称和第 2 至 11 列我的数字数据。
列名是 X1
到 X10
。
我的数据中有很多 NA
。
我可以很容易地为每一行计算它,但是当我将它们组合起来时,我总是得到
Argument is not numeric or logical: returning 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= 编码(显然代表函数)。因此,如果您想在预期的 function/computation 中一次输入一行,那么您将选择 MARGIN=1 否则您将选择 MARGIN=2 (这意味着一次一列将被输入函数)。
因为在你的情况下你想计算列号 2 到 11 的均值、sd 和 var,你将分三个步骤完成,你是对的,我们将对所有三个 statments 设置 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)
如果我在这里说的任何事情您不清楚,请告诉我。祝一切顺利
您可以使用 purrr
包。
library(purrr)
mydatabase %>% map_if(is.numeric, function(x) mean(x, na.rm = TRUE))
这将计算数据库中所有数字列的平均值,同时忽略 NA 值。
我有一些数据,只想计算mean
、sd
、var
等。我的问题不是功能而是列,我似乎无法弄清楚如何选择它们。
因此第一列包括动物的名称和第 2 至 11 列我的数字数据。
列名是 X1
到 X10
。
我的数据中有很多 NA
。
我可以很容易地为每一行计算它,但是当我将它们组合起来时,我总是得到
Argument is not numeric or logical: returning 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= 编码(显然代表函数)。因此,如果您想在预期的 function/computation 中一次输入一行,那么您将选择 MARGIN=1 否则您将选择 MARGIN=2 (这意味着一次一列将被输入函数)。 因为在你的情况下你想计算列号 2 到 11 的均值、sd 和 var,你将分三个步骤完成,你是对的,我们将对所有三个 statments 设置 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)
如果我在这里说的任何事情您不清楚,请告诉我。祝一切顺利
您可以使用 purrr
包。
library(purrr)
mydatabase %>% map_if(is.numeric, function(x) mean(x, na.rm = TRUE))
这将计算数据库中所有数字列的平均值,同时忽略 NA 值。