我有一个日期为因子的数据集
我尝试使用lubridate
包来提取年份和月份,以便在我的data.frame中创建一个新列,但它不起作用。
#load packages
library(lubridate)
#Create Dataset
Data <- read.csv("C:/Users/TheKaspa/Dropbox/Bocconi/LM - Management/Tesi/WIP/Database/Elab.csv", header=TRUE)
#Get the year
Y <- year(Data$Activity_close)
Y
结果是
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[26] 1 1 1 1 1 1 1 1 1 1 1 1 31 1 1 1 1 1 1 1 1 1 1 1 1
[51] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[76] 1 1 1 1 1 1 31 31 1 1 1 1 31 31 31 31 31 1 1 1 1 1 1 1 1
[101] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 31 31 31 31
[126] 31 31 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[151] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[176] 1 1 1 1 1 1 1 1 1 31 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[201] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[226] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[251] 1 1 31 1 31 1 31 1 1 1 1 31 1 1 1 31 31 31 31 31 31 31 1 1 1
[276] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 31 31
[301] 31 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[326] 1 1 1 1 1 1
但数据是(summary
的样本)
1/12/2010 00:00:00
1/5/2010 00:00:00
1/6/2010 00:00:00
1/12/2011 00:00:00
1/5/2011 00:00:00
1/10/2010 00:00:00
我该怎么办?
答案 0 :(得分:2)
在提取日期元素之前,您应该将因子转换为固定日期。例如,我在使用dmy_hms
:
library(lubridate)
year(dmy_hms('1/12/2010 00:00:00'))
month(dmy_hms('1/12/2010 00:00:00'))
另请注意,无需使用lubridate
,您可以在基础R中实现相同的功能:
as.POSIXlt('1/12/2010 00:00:00',format='%d/%m/%Y %H:%M:%S')
答案 1 :(得分:1)
使用as.Date将字符串转换为datetime。使用strftime仅提取year元素。
time <- "1/12/2010 00:00:00"
timeformatted <- as.Date(time,"%d/%m/%Y %H:%M:%S")
strftime(
timeformatted,
"%Y"
)
#[1] "2010"
答案 2 :(得分:0)
您需要将日期格式设置为正确的日期。
Dates <- readLines(textConnection("1/12/2010 00:00:00
1/5/2010 00:00:00
1/6/2010 00:00:00
1/12/2011 00:00:00
1/5/2011 00:00:00
1/10/2010 00:00:00"))
library(lubridate)
year(Dates)
# [1] 1 1 1 1 1 1
ProperDates <- as.POSIXct(Dates, format="%d/%m/%Y %H:%M:%S")
year(ProperDates)
# [1] 2010 2010 2010 2011 2011 2010
另见
?strptime
?as.POSIXct
- 我要补充一点,你可能需要确保输入是一个字符向量而不是一个因素,但as.POSIXct似乎也适用于因素。然而,将日期/时间信息存储为因子是没有意义的。