R:如何通过更改R中的字符串来循环和汇总摘要统计信息?

时间:2018-10-19 10:34:58

标签: r loops aggregate paste

我正在尝试将类似于以下数据帧(只是具有更多变量)的数据帧聚合到一个新的数据帧中,根据分组变量描绘出描述性内容。由于变量很多,我想循环进行编码过程。

pad_A <- rnorm(44, 0.5, 03)
pad_B <- rnorm(44, 0.7, 0.7)
pad_C <- rnorm(44, 0.2, 1.0)
sk_A  <- rbinom(44, size = 1, prob = 0.3)
sk_B  <- rbinom(44, size = 1, prob = 0.5)
sk_C  <- rbinom(44, size = 1, prob = 0.1)
df    <- cbind(pad_A, pad_B, pad_C, sk_A, sk_B, sk_C) %>% as.data.frame()

我想根据“ sk_A”的值计算“ pad_A”的均值,标准差,置信界和obs数,根据“ sk_B”的值计算“ pad_B”,根据“ sk_C”的值计算“ pad_C”,等等,例如下面的“ pad_A”代码:

pad_A_df1 <- aggregate(df$pad_A, list(df$sk_A), mean, na.rm = T)
pad_A_df2 <- aggregate(df$pad_A, list(df$sk_A), sd, na.rm = T)
pad_A_df2[1] <- NULL
pad_A_df3 <- aggregate(df$pad_A, list(df$sk_A), FUN = function(x)t.test(x)$conf.int[1:2])
pad_A_df3 <- pad_A_df3[[2]]
pad_A_df3 <- as.data.frame(pad_A_df3)
pad_A_df4 <- aggregate(df$pad_A, list(df$sk_A), length)
pad_A_df4[1] <- NULL

pad_A_df <- cbind(pad_A_df1, pad_A_df2, pad_A_df3, pad_A_df4)
colnames(pad_A_df) <- c("sk_A", "Mean", "SE", "Lower CI", "Upper CI", "N")
print(pad_A_df)

结果应该类似于“ pad_A_df”对象中的内容。 我想循环执行上面的代码并将其应用于所有变量,因为显然我不想重复多次编码。

但是我在汇总变量,创建新对象以及在循环内更改和粘贴字符串的组合方面遇到了麻烦,由于这些问题,我已经避免了使用循环很多次,而我找不到解决方案。

>

到目前为止,我仅能为所有后续步骤创建名称正确的对象,但是到目前为止,我到目前为止编写的所有内容都是胡说八道。

namelist_df <- names(df)

for (i in namelist_df[1:3]) {
  for (j in 1:3){
    dfs <- paste0("pad_", i, "_df", j)
    print(dfs)
  } 
}

非常感谢您的帮助。

0 个答案:

没有答案