Date Transformation in R
我遇到了一个很小的问题,但不知何故无法解决。
当我导入具有日期的 csv 文件时,日期将以 “%Y-%m-%d” 格式出现。但我希望它采用 “%d-%m-%Y” 格式。我试过 “as.Date” 来改造它。但它不起作用。
导入后的数据结构如下:
1
2 3 4 5 6 |
Date Share_Val
21/01/2015 20 22/01/2015 19 23/01/2015 21 24/01/2015 23 25/01/2015 26 |
但是当我通过 read.csv 导入文件时,数据如下所示:
1
2 3 4 5 6 |
Date Share_Val
01/21/2015 20 01/22/2015 19 01/23/2015 21 01/24/2015 23 01/25/2015 26 |
我试过润滑。但它没有帮助。
山姆的结果正是我想要的方式。但是当我尝试以下操作时,它不会来
1
|
data$date<-format(as.Date(data$date,”%m/%d/%Y”))
|
谁能给我一些建议?
- 你能举一个更精确的例子,比如你看到的输入字符串吗?
- 查看包 lubridate
- format(as.Date(“2015-09-21″),”%d-%m-%Y”)
- 谢谢大家的意见。我已经在问题本身中回复了所有人的建议,因为弗兰克想要更准确一点。
- @SamThomas 的格式似乎有点偏离 “/” vs “-“。但是 format(as.Date(“21/01/2015″),”%d/%m/%Y”) 应该可以工作…尽管正如弗兰克所说,您的问题没有得到清楚的描述。
- @Alex:感谢 Alex 的建议!我试图举一个小例子来解释我的问题。当我参加 1 次date时,山姆的回答有效。但是如何转换 “Date” 变量中的所有日期。
- @Alex 我的评论是在示例数据之前发表的
- 21/01/2015 是长度为 1 的字符向量。将其替换为您的日期向量
看看这是否有帮助。注意 stringsAsFactors。如果您的 Date 字段是一个因素,您将需要 data$Date <- as.character(data$Date) first
1
2 3 4 5 6 |
data <- data.frame(Date = c(“21/01/2015″,”22/01/2015″,”23/01/2015”,
“24/01/2015″,”25/01/2015”), Share_Val=c(20, 19, 21, 23, 26), stringsAsFactors=F) format(as.Date(data$Date,”%d/%m/%Y”),”%d-%m-%Y”) |
- 非常感谢山姆!你的回答非常好。再次感谢。
评论太长了。
我认为您可能误解了日期在 R 中的工作方式。类 Date 的变量(或列)在内部存储为自 1970 年 1 月 1 日以来的天数。当您打印 Date 变量时,它使用 %Y-%m-%d 格式显示。 as.Date(…) 函数将字符转换为日期。 format=… 参数控制如何解释字符串,而不是如何显示结果,如:
1
2 3 4 |
as.Date(“02/05/2015″, format=”%m/%d/%Y”)
# [1]”2015-02-05″ as.Date(“02/05/2015″, format=”%d/%m/%Y”) # [1]”2015-05-02″ |
因此,在第一种情况下,字符串被解释为 2 月 5 日,第二个是 5 月 2 日。请注意,在这两种情况下,结果都以 %Y-%m-%d 格式显示(打印)。
- 谢谢杰霍华德!我没有意识到这一点。这真的很有帮助,即使没有完全回答我的问题。再次感谢。
来源:https://www.codenong.com/32698701/