r - R:循环遍历数据子集的向量,并针对每一个,将其与一些聚合进行比较
问题描述
假设我使用玩具数据
library(dplyr)
dat <- data.frame(
ID = letters[1:20],
Category = rep(c(1,2),10),
Values = rnorm(20,0,1)
)
A_B <- dat[1:6,]
A_notB <- dat[7:14,]
notA_B <- dat[15:16,]
notA_notB <- dat[17:20,]
对于每个子集,我想计算其按类别分组的方差,我可以这样做。但是,对于每个子集,我还想将其按类别分组的方差与三个备选方案进行比较。
如果我只使用子集的示例,最容易解释A_B
。我想将其分组方差与以下各项的分组方差进行比较:
(1) 所有不在的数据A_B
,
(2) 变量中所有以notA
(和 的notA_B
并集notA_notB
)开头的数据,
(3) 以结尾的所有数据notB
有没有办法在 for 循环中完成此操作,或者数据的三个分组是否如此依赖于子集的名称,而只是暴力地为每个案例写出代码真的是最有效的继续方式?
解决方案
您可以将函数拆分数据库构建为“案例”与休息,并应用于不同案例列表以查看所有差异比较
Case <- c("A_B", "A_notB", "notA_B", "notA_notB")
Total <- rbind(cbind(A_B, gr="A_B"),
cbind(A_notB, gr="A_notB"),
cbind(notA_B, gr="notA_B"),
cbind(notA_notB, gr="notA_notB"))
vargr_comp <- function(case){
Total%>%
mutate(split = ifelse(gr==case, case, paste0("not ", case)))%>%
group_by(split, gr, Category)%>%
summarise(var=var(Values))
}
lapply(Case, vargr_comp)
推荐阅读
- javascript - $http PDF 下载 - 无效文件
- cmake - 支持qnx中的cmake??从 Linux 移植到 QNX
- java - 一年中的一周的Java日期库中的不一致
- rx-java - 通过 Observable 将值返回给调用者
- html - 响应式设计顶部导航
- android - 上传时谷歌地图不显示
- r - 在 R 中找不到从输出到 write.csv 的文件
- ios - 多个用户在同一设置会话中注册的 iOS FaceID/TouchID 问题
- python - Flask / SQL Alchemy 原始查询而不是类方法
- asp.net-mvc - 来自会话的 ASP.NET MVC 模型映射