【发布时间】:2020-10-03 22:15:06
【问题描述】:
这是 StackOverflow 问题的扩展 - Subset Data Based On Elements In List - 它回答了如何创建新 dfs 列表的问题,每个新 dfs 都是通过基于分组因子变量对原始一个子集来构造的。
我遇到的挑战是我需要使用多个分组变量来创建 dfs
为了概括这个问题,我创建了这个玩具数据集——它以每天的降雨量作为响应变量,以当天的温度范围和云量作为分类器。
rain <- c(2, 0, 4, 25, 3, 9, 4, 0, 4, 0, 8, 35)
temp <- as.factor(c("Warm","Cold","Hot","Cold","Warm","Cold","Cold","Warm","Warm","Hot","Cold", "Cold"))
clouds <- as.factor(c("Some","Lots","None","Lots","None","None","Lots","Some","Some","Lots","None", "Some"))
df <- data.frame(rain, temp, clouds)
使用以下代码,我可以生成三个新的数据帧,这些数据帧按 temp 变量分组,全部组合成一个列表 (df_1A):
temp_levels <- unique(as.character(df$temp))
df_1A <- lapply(temp_levels, function(x){subset(df, temp == x)})
同样适用于按云量分组的三个新数据帧
cloud_levels <- unique(as.character(df$clouds))
df_1B <- lapply(cloud_levels, function(x){subset(df, clouds == x)})
但是,我无法想出一种简单、优雅的方式来生成 9 个数据帧,每个数据帧都有独特的温度和云量组合
谢谢
【问题讨论】: