所以我有一个excel表加载到R中,其中包含多个日期。我需要把所有的东西都转换成一个可以用R阅读的实际日期,但按照表格的方式(我没有做到(,所有的日期都很混乱,默认情况下都不可读。我还试着通过将设置从";文本";至";"长期";但对R.没有任何帮助
到目前为止,我已经能够使用separate()
函数两次(一次用于年份,两次以嵌套方式用于月份和日期(将一个日期列分隔为三列。日期和年份列现在设置为as.numeric()
。现在我所要做的就是把搞砸的月份转换成R中实际可读的东西,这样我就可以进行完整的日期转换。
我想把这个变成这个:
Month Date Readable Month
Jan January
Feb February
Mar March
. .
. .
July July
June June
它们都是我数据帧中的chr
。我需要用这个修复很多列。
一旦我能弄清楚最后一步,我就计划创建一个函数来自动完成这个过程,并创建一个新的";日期";列中具有在R中可读的日期;Full_ Date;我需要到达但尚未到达的栏。
Month Day Year Full_Date
January 1 1999 1999-01-01
March 21 2019 2019-03-21
我的代码——尽管可能不是最有效的:
birth_data <- data.frame(
Brirth_Month = separate(
separate(play_data, col = "Birth", into = c("B_M_D", "B_Year"), sep = "\,"),
col = "B_M_D",
into = c("B_Month", "B_Day"),
sep = " ")$B_Month,
Brirth_Day = as.numeric(separate(
separate(play_data, col = "Birth", into = c("B_M_D", "B_Year"), sep = "\,"),
col = "B_M_D",
into = c("B_Month", "B_Day"),
sep = " ")$B_Day),
Birth_Year = as.numeric(separate(play_data, col = "Birth", into = c("B_M_D", "B_Year"), sep = "\,")$B_Year)
)
birth_data
编辑我制作的原始数据示例,但不是真实日期,只是由我随机制作的
play_data <- data.frame(
Birth = c("Jan 23, 2019", "Feb 23, 1998", "June 3, 2003", "Oct 7, 2007", "Feb 28, 2004", "Apr 19, 2014", "Mar 11, 1988", "Sept 30, 2011")
)
str(playdate)
as.Date(dates$Birth)
有了lubridate,这就起作用了:
library(lubridate)
play_data$Birth <- mdy(play_data$Birth)