r语言 - 如何按字段排列(dplyr)数据框"date"?



我有一个数据帧df,列名为"date"。 当我想按日期安排时:df %>% arrange(date)我收到以下错误:

error in arrange_impl(.data, dots) : 
cannot arrange column of class 'function' at position 1

除了更改列名之外,强制它按此列排列的方法是什么?

我们可以使用backquotes来指定带有前导/滞后空格的列名

df %>%
arrange(` date `)

或者更好的方法是通过删除空格(trimws)来rename列,然后像OP代码中那样使用arrange

df %>%
rename_all(trimws) %>%
arrange(date)

注意:最好不要在列名称中使用空格,无论是前导/滞后还是分隔词。 通常,如果列名中有多个单词,请使用下划线 (_) 来连接它。


如果列名没有任何空格 ('df1'),则在arrange之后group_bygroup_by之后arrange都可以很好地工作

df1 %>%
group_by(date) %>% 
arrange(col2)
# A tibble: 6 x 2
# Groups: date [6]
#  date         col2
#  <date>      <dbl>
#1 2018-03-26 -0.848
#2 2018-03-27 -0.584
#3 2018-03-29 -0.466
#4 2018-03-28  0.266
#5 2018-03-30  0.445
#6 2018-03-31  0.847
df1 %>% 
group_by(col2) %>%
arrange(date)
# A tibble: 6 x 2
# Groups: col2 [6]
#  date         col2
#  <date>      <dbl>
#1 2018-03-26 -0.848
#2 2018-03-27 -0.584
#3 2018-03-28  0.266
#4 2018-03-29 -0.466
#5 2018-03-30  0.445
#6 2018-03-31  0.847

数据

set.seed(24)
df <- data.frame(" date " = sample(Sys.Date() + 0:5), col2 = rnorm(6), check.names = FALSE)
df1 <- df
colnames(df1)[1] <- "date"

最新更新