如何在 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)))
输出: