我有三个变量:年,月和日。如何将它们合并为一个变量(" Date"),以便将变量表示为: YYYY-MM-DD
提前致谢和最诚挚的问候!
答案 0 :(得分:0)
下面我们创建年 - 月 - 日字符串,yyyy-mm-dd字符串(类似的除了一个月的数字和日期,零填充到2位数)和Date类。最后一个打印为yyyy-mm-dd,可以用字符串不能的方式进行操作,例如在Date类对象中添加一个给出第二天。
首先我们设置一些示例输入:
year <- c(2017, 2015, 2014)
month <- c(3, 1, 10)
day <- c(15, 9, 25)
转换为年 - 月 - 日字符串这不是yyyy-mm-dd,因为1位数月份和天数不是零填充为2位数字:
paste(year, month, day, sep = "-")
## [1] "2017-3-15" "2015-1-9" "2014-10-25"
转换为Date类它在控制台上打印为yyyy-mm-dd。两种选择:
as.Date(paste(year, month, day, sep = "-"))
## [1] "2017-03-15" "2015-01-09" "2014-10-25"
as.Date(ISOdate(year, month, day))
## [1] "2017-03-15" "2015-01-09" "2014-10-25"
转换为字符串yyyy-mm-dd 在这种情况下,1位数的月份和日期将零填充为2个字符。两种选择:
as.character(as.Date(paste(year, month, day, sep = "-")))
## [1] "2017-03-15" "2015-01-09" "2014-10-25"
sprintf("%d-%02d-%02d", year, month, day)
## [1] "2017-03-15" "2015-01-09" "2014-10-25"
答案 1 :(得分:0)
如何将三个变量合并为一个变量?
考虑两种方法:
旧学校
使用dplyr
,lubridate
和数据框
并考虑数据类型。您可以:
Date
或POSIXct
最终类型老派的方法很简单。我假设你正在使用向量或列表,但还不知道数据帧。让我们获取您的数据,强制它采用标准化,明确的格式,并连接数据。
> y <- 2012:2015
> y
[1] 2012 2013 2014 2015
> m <- 1:4
> m
[1] 1 2 3 4
> d <- 10:13
> d
[1] 10 11 12 13
如果您想要安全并在连接之前将所有内容转换为相同的格式,请使用as.numeric
。如果您获得任何NA
值,则需要使用is.na
函数处理它们并提供默认值。
使用paste
并将sep
分隔符值设置为分隔符,在本例中为连字符。
> paste(y,m,d, sep = '-')
[1] "2012-1-10" "2013-2-11" "2014-3-12" "2015-4-13"
> df <- data.frame(year = y, mon = m, day = d)
> df
year mon day
1 2012 1 10
2 2013 2 11
3 2014 3 12
4 2015 4 13
下面我会做以下几点:
df
对象Date
y
,m
和d
与-
分隔符连接起来Date
ymd()
格式
醇>
> df %>%
mutate(Date = ymd(
paste(y,m,d, sep = '-')
)
)
year mon day Date
1 2012 1 10 2012-01-10
2 2013 2 11 2013-02-11
3 2014 3 12 2014-03-12
4 2015 4 13 2015-04-13