📌  相关文章
📜  如何在 R 中按日期对 DataFrame 进行排序?

📅  最后修改于: 2022-05-13 01:55:08.949000             🧑  作者: Mango

如何在 R 中按日期对 DataFrame 进行排序?

在本文中,我们将讨论如何在 R 编程语言中对数据框进行排序。

我们可以使用 data.frame()函数在 R 中创建一个数据框。在数据框中,我们可以使用 as.Date()函数以 '%m/%d/%Y' 格式创建日期列。

示例

让我们创建一个包含日期的 2 列数据框

R
# create a dataframe
data=data.frame(date=c('1/1/2021', '4/5/2021',
                       '2/3/2021', '11/21/2011'),
                values=c(34,56,78,32))
  
# display
data


R
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data[order(as.Date(data$date, format="%m/%d/%Y")), ]


R
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data[rev(order(as.Date(data$date, format="%m/%d/%Y"))), ]


R
# import libraries
library(lubridate)
library(dplyr)
  
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data % > % arrange(mdy(data$date))


R
# import libraries
library(lubridate)
library(dplyr)
  
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data % > % arrange(desc(mdy(data$date)))


输出

方法 1:来自基础 R 的用户 order()

这里 order()函数用于通过 R 使用 order()函数根据日期列对数据框进行排序,我们必须将日期列转换为具有格式的日期,这将按升序排序。

语法

data[order(as.Date(data$column_name, format="%m/%d/%Y")),]

在哪里

  • 数据是输入数据框
  • column_name 是日期列

示例

R

# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data[order(as.Date(data$date, format="%m/%d/%Y")), ]

输出

为了按降序排序,我们必须使用用于反转数据帧的 rev()函数

示例

R

# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data[rev(order(as.Date(data$date, format="%m/%d/%Y"))), ]

输出

方法 2:使用 lubridate 和 dplyr 包中的函数

我们可以使用这些包使用以下方法按日期对数据框进行排序。 mdy() 用于对数据框中的日期进行排序,并将按升序对其进行排序

语法

data %>% arrange(mdy(data$column_name))

在哪里

  • 数据是输入数据框
  • column_name 是日期列

示例

R

# import libraries
library(lubridate)
library(dplyr)
  
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data % > % arrange(mdy(data$date))

输出

如果我们想以相反的顺序对数据框中的日期进行排序,那么我们必须使用 desc()函数

语法

data %>% arrange(desc(mdy(data$column_name)))

示例

R

# import libraries
library(lubridate)
library(dplyr)
  
# create a dataframe
data = data.frame(date=c('1/1/2021', '4/5/2021',
                         '2/3/2021', '11/21/2011'),
                  values=c(34, 56, 78, 32))
  
# display
data % > % arrange(desc(mdy(data$date)))

输出