R 基于列名列表获取数据帧中特定列的平均值
我需要修改其他人编写的一些R代码,使其更通用。编写此代码是为了在具有特定列名的特定数据上运行,但他们希望能够在完全不同的数据集上运行相同的代码。这意味着我需要让代码获取列名向量,并在引用特定列的地方使用这些向量 作为一个简单的例子,假设我有一个数据框,其中每一行都是一个人的年龄、性别和一系列关于这个人的观察值。这是我的数据:R 基于列名列表获取数据帧中特定列的平均值,r,R,我需要修改其他人编写的一些R代码,使其更通用。编写此代码是为了在具有特定列名的特定数据上运行,但他们希望能够在完全不同的数据集上运行相同的代码。这意味着我需要让代码获取列名向量,并在引用特定列的地方使用这些向量 作为一个简单的例子,假设我有一个数据框,其中每一行都是一个人的年龄、性别和一系列关于这个人的观察值。这是我的数据: df <- data.frame(age=sample(20:30, 500, T), gender=sample(c("M", "F"), 500, T),
df <- data.frame(age=sample(20:30, 500, T), gender=sample(c("M", "F"), 500, T),
A=sample(1:100, 500, T), B=sample(3:50, 500, T),
C=sample(2:6, 500, T))
然后我想,对于每一对年龄和性别,得到其他变量的平均值。在具体情况下,我想做:
df.means <- ddply(df, .(age, gender), summarize, mean_A = mean(A), mean_B = mean(B))
然而,我想要的是给定向量,id_vars您可以尝试dplyr
在哪里
library(dplyr)
res <- df %>%
group_by_(.dots=id_vars) %>%
summarise_each_(funs(mean), covariates)
head(res,3)
# age gender A B C
# 1 20 F 39.35294 24.70588 3.235294
# 2 20 M 59.14286 25.35714 4.428571
# 3 21 F 54.19048 26.66667 3.809524
id_vars <- c("age", "gender")
covariates <- c("A", "B", "C")