我正在使用示例数据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问题后,我仍然无法弄明白。如何将此数据框正确地分成两组?
答案 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
应该为空,因为数据框中没有匹配的记录。