我通过以下方式阅读了csv文件:
data = read.csv("airbnb.csv",header=T,sep=",")
数据有100多个变量,我需要计算所有变量的平均值。实际上我需要自动执行以下操作:
mean(data$variable1)
mean(data$variable2)
...
有什么好方法可以做到这一点吗?例如。有一个循环?
答案 0 :(得分:2)
您可以使用apply()
或在评论中提到的@akrun colMeans()
。后者针对这种情况进行了优化,因此对于大型数据集,它可能比前者表现更好。
您提到您有多种类型的数据,并且您只想选择数字列。这很简单,你只需要预先识别数字列。这可以使用sapply()
与is.numeric()
进行。
# Select numeric columns
data.numcols <- data[, sapply(data, is.numeric)]
# Using apply
all.means <- apply(data.numcols, 2, mean)
# Using colMeans
all.means <- colMeans(data.numcols)
如果您的列包含NA
,则可以排除NA
值,如下所示:
# Using apply
all.means <- apply(data.numcols, 2, function(x) mean(x, na.rm = TRUE))
# Using colMeans
all.means <- colMeans(data.numcols, na.rm = TRUE)