r - 调整输出表中的日期顺序

标签 r dataframe sorting datetime

输出表的顺序不正确,01/01之后变成01/02而不是03/01,如何调整?

 df1<- structure(
  list(date2= c("01-01-2021","01-01-2021","03-01-2021","03-01-2021","01-02-2021","01-02-2021"),
       Category= c("ABC","CDE","ABC","CDE","ABC","CDE"),
       coef= c(5,4,0,2,4,5)),
  class = "data.frame", row.names = c(NA, -6L))

x<-df1 %>%
  group_by(date2) %>%
  summarize(across("coef", sum),.groups = 'drop')

> x
# A tibble: 3 x 2
  date2       coef
  <chr>      <dbl>
1 01-01-2021     9
2 01-02-2021     9
3 03-01-2021     2

预期输出表

  date2       coef
      <chr>      <dbl>
    1 01-01-2021     9
    2 03-01-2021     2
    3 01-02-2021     9

如果我有以下代码:

df1<- structure(
  list(date2= c("01-01-2022","01-01-2022","03-01-2021","03-01-2021","01-02-2021","01-02-2021"),
       Category= c("ABC","CDE","ABC","CDE","ABC","CDE"),
       coef= c(5,4,0,2,4,5)),
  class = "data.frame", row.names = c(NA, -6L))

x<-df1 %>%
  group_by(date2) %>%
  summarize(across("coef", sum),.groups = 'drop')%>% 
  arrange(date2 = as.Date(date2, format = "%d-%m-%y"))

> x
# A tibble: 3 x 2
  date2       coef
  <chr>      <dbl>
1 01-01-2022     9
2 03-01-2021     2
3 01-02-2021     9
      

此顺序不正确,因为 01-01-2022 必须是最后一个而不是第一个。

最佳答案

您可以将日期列转换为日期格式,并对其进行排列。我还建议您对日期列使用日期格式,以便将来进行数据处理。

基础R

x$date2 <- as.Date(x$date2, format = "%d-%m-%Y")
x[order(x$date2),]

dplyr

x %>% 
  arrange(date2 = as.Date(date2, format = "%d-%m-%Y")

# A tibble: 3 x 2
  date2       coef
  <chr>      <dbl>
1 01-01-2021     9
2 03-01-2021     2
3 01-02-2021     9

关于r - 调整输出表中的日期顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70712669/

相关文章:

python - 错误 : None of [Index( ['...' ], dtype ='object' )] 在 [索引]

php - mysql 对发送和接收的消息进行排序

r - 如何在 R 中将 x 轴上的日期格式化为月份和年份

r - 有条件地乘以向量(货币换算)

python - Pandas:如何将列中的多个列表拆分为多行?

apache-spark - 如何在范围内划分数字列并为 apache spark 中的每个范围分配标签?

javascript - Node v.8.1.3 sort() 方法运行不正确?

java - 如何对 List<Integer> 进行排序?

r - ggplot2 堆积条形图 - 每个条形图均为 100%,每个条形图内都有百分比标签

r - 是否有用于模块化报告生成的\SweaveInput{} 的 R markdown 模拟?