R数据帧基于多个因子值(多个月)进行拆分

时间:2017-05-08 03:53:56

标签: r dataframe

我正在使用示例数据airquality,我希望将数据框拆分为月份介于5-10之间,而月份是其他值。

我有什么:

aq <- na.omit(airquality)
aq$MonthF <- factor(aq$Month)  # Make the month a factor

我尝试过(分裂):

aq_s <- split(aq, aq$MonthF %in% c(5:10))
aq_n <- split(aq, aq$MonthF %in% c(1:4, 11:12))

我试过(子集):

aq_s <- subset(aq, MonthF %in% c(5:10))
aq_n <- subset(aq, MonthF %in% c(1:4, 11:12))

结果:

> head(aq_n)
data frame with 0 columns and 6 rows

在查看其他stackoverflow问题后,我仍然无法弄明白。如何将此数据框正确地分成两组?

2 个答案:

答案 0 :(得分:1)

如@akrun所述,我没有正确检查数据:

unique(aq$Month)  # [1] 5 6 7 8 9

所以仍然回答这个问题,但是我想根据第5,7-9号分割数据,这样可行:

aq_s <- subset(aq, MonthF %in% c(5, 7:9))
aq_n <- subset(aq, MonthF %in% c(6))

unique(aq_s$MonthF)
# [1] 5 7 8 9
# Levels: 5 6 7 8 9

unique(aq_n$MonthF)
# [1] 6
# Levels: 5 6 7 8 9

答案 1 :(得分:0)

尝试执行unique(aq$Month)。您会看到数据集中的唯一月份是5月到9月。

此外,这是使用dplyr的解决方案: aq_s <- aq %>% filter( MonthF %in% c(5:10) ) aq_n <- aq %>% filter( MonthF %in% c(1:4, 11:12) )

同样,aq_n 应该为空,因为数据框中没有匹配的记录。