看起来select并没有从数据集中删除未选中的列。。很奇怪。这里有一个简单的例子:
library(nycflights13)
library(dplyr)
dly <- flights %>%
group_by( year, month, day) %>%
summarise(
arr_mean = mean(arr_delay, na.rm=TRUE),
dep_mean = mean(dep_delay, na.rm=TRUE)
) %>% mutate(
dt = as.Date(ISOdate( year, month, day ) )
)
> glimpse( dly, 50 )
Observations: 365
Variables: 6
$ year (int) 2013, 2013, 2013, 2013, 2013...
$ month (int) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ day (int) 1, 2, 3, 4, 5, 6, 7, 8, 9, 1...
$ arr_mean (dbl) 12.6510229, 12.6928879, 5.73...
$ dep_mean (dbl) 11.548926, 13.858824, 10.987...
$ dt (date) 2013-01-01, 2013-01-02, 201...
所以。。。易于理解的得到一个平均日,然后加上一个R日期。(是的,我知道数据集中有一个time_hour,但这应该仍然有效)。现在我想摆脱年、月和;天字段(到ggplot的gather())。。。但select并没有将其剥离:
dly %>% select( dt, arr_mean, dep_mean) %>% glimpse(50)
Observations: 365
Variables: 5
$ year (int) 2013, 2013, 2013, 2013, 2013...
$ month (int) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ dt (date) 2013-01-01, 2013-01-02, 201...
$ arr_mean (dbl) 12.6510229, 12.6928879, 5.73...
$ dep_mean (dbl) 11.548926, 13.858824, 10.987...
一天过去了,但是年月还在。为什么?
即使我在他们身上嬉戏,他们仍然在那里:
dly$year <- NULL
dly$month <- NULL
dly$day <- NULL
dly %>% glimpse(50)
Observations: 365
Variables: 3
$ arr_mean (dbl) 12.6510229, 12.6928879, 5.73...
$ dep_mean (dbl) 11.548926, 13.858824, 10.987...
$ dt (date) 2013-01-01, 2013-01-02, 201...
看起来他们已经走了,但他们真的没有:
dly %>% select( dep_mean) %>% glimpse(50)
Error: invalid column index : NA for variable: year = year
我确信我遗漏了一些显而易见的东西,但我不确定是什么。
如果我不分组/更改数据,它就可以正常工作。
提前感谢的帮助
如果运行dly%>%head()
,您将在控制台中看到dly
仍然分组:
Groups: year, month [1]
在选择应"释放"dly
之前插入%>% ungroup()%>%