将日期列转换为新列中的日期和月份
Converting date column to day of month and month in a new column
我有这种数据框
dat <- read.table(text = " count date
0 10/05/2012
1 10/05/2013
1 10/05/2014
",header = TRUE)
我想要一个包含以下格式的新变量:
> dat
count date DayMonth
1 0 10/05/2012 10-05
2 1 10/05/2013 10-05
3 1 10/05/2014 10-05
我尝试了某些版本的 strptime 函数,例如 dat$DayMonth<-strptime(dat$date, "%d/%m")
,但得到了奇怪的结果。
我怎样才能得到想要的结果
我们可以用 as.Date
和 format
来做到这一点
dat$DayMonth <- format(as.Date(dat$date, "%d/%m/%Y"), "%d-%m")
dat$DayMonth
#[1] "10-05" "10-05" "10-05"
Using strptime
converts to POSIXlt/POSIXct
class, 从中我们可以改成使用format
的格式
注意:没有使用外部包
使用包 lubridate
或 anydate
的相同解决方案。
library(lubridate)
dat$DayMonth <- format(dmy(dat$date), "%d-%m")
# dmy stands for day,month,year, can you use ymd etc.
library(anytime)
dat$DayMonth <- format(anydate(dat$date), "%d-%m")
我有这种数据框
dat <- read.table(text = " count date
0 10/05/2012
1 10/05/2013
1 10/05/2014
",header = TRUE)
我想要一个包含以下格式的新变量:
> dat
count date DayMonth
1 0 10/05/2012 10-05
2 1 10/05/2013 10-05
3 1 10/05/2014 10-05
我尝试了某些版本的 strptime 函数,例如 dat$DayMonth<-strptime(dat$date, "%d/%m")
,但得到了奇怪的结果。
我怎样才能得到想要的结果
我们可以用 as.Date
和 format
dat$DayMonth <- format(as.Date(dat$date, "%d/%m/%Y"), "%d-%m")
dat$DayMonth
#[1] "10-05" "10-05" "10-05"
Using strptime
converts to POSIXlt/POSIXct
class, 从中我们可以改成使用format
注意:没有使用外部包
使用包 lubridate
或 anydate
的相同解决方案。
library(lubridate)
dat$DayMonth <- format(dmy(dat$date), "%d-%m")
# dmy stands for day,month,year, can you use ymd etc.
library(anytime)
dat$DayMonth <- format(anydate(dat$date), "%d-%m")