R 日期格式有问题。如何将单独的月份和年份列合并为一个日期?
我正在处理劳动统计局的数据。当我从他的网页加载数据作为数据框时。我得到这样的东西:R 日期格式有问题。如何将单独的月份和年份列合并为一个日期?,r,date,R,Date,我正在处理劳动统计局的数据。当我从他的网页加载数据作为数据框时。我得到这样的东西: year period periodName latest value footnotes seriesID date <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> 1 2020 M07 Jul
year period periodName latest value footnotes seriesID date
<dbl> <chr> <chr> <chr> <dbl> <chr> <chr>
1 2020 M07 July true 139582 "P preliminary" CES0000000001
2 2020 M06 June NA 137819 "P preliminary" CES0000000001
3 2020 M05 May NA 133028 "" CES0000000001
4 2020 M04 April NA 130303 "" CES0000000001
5 2020 M03 March NA 151090 "" CES0000000001
6 2020 M02 February NA 152463 "C corrected" CES0000000001
year period period name最新值脚注seriesID date
1 2020 M07年7月真实139582“P初步”CES00000000001
2020年6月2日北美137819“P初步”CES00000000001
2020年5月3日北美133028英寸CES00000000001
4 2020年4月NA 130303英寸CES00000000001
5 2020年3月30日北美151090英寸CES00000000001
6 2020年2月2日NA 152463“C已更正”CES00000000001
如您所见,日期有两个不同的列(年和期间)。因此,我尝试将它们组合成一个日期列:
nfp$date <- as.yearmon(paste(nfp$year, nfp$period), "%Y %m")
nfp$date我认为您只需要将字符串设置为默认格式之一,即可被as.yearmon
读取。从文档中,其中一个是“%b%Y”
,因此您可以执行以下操作:
库(dplyr)
图书馆(动物园)
df%>%变异(日期=as.yearmon(粘贴(periodName,year)))
#>#tibble:6 x 8
#>年份期间期间名称最新值脚注序列ID日期
#>
#>1 2020年7月7日真实139582“P初步”CES00000000001 2020年7月
#>2020年6月13日2016年6月19日“P初步”CES00000000001 2020年6月
#>3 2020年5月13日28英寸2020年5月3日
#>4 2020年4月4日2014年4月13日303英寸CES00000000001 2020年4月
#>5 2020年3月3日2009年3月15日“CES00000000001 2020年3月
#>6 2020年2月15日2002年2月15日463“C修正”CES00000000001 2020年2月
数据
df年期间期间期间名称最新值脚注序列ID
#>2020年7月1日2007年7月真实139582 P初步CES00000000001
#>2 2020年6月137819日中期CES00000000001
#>3 2020年5月13日2018年5月13日CES00000000001
#>4 2020年4月4日2013年4月13日CES00000000001
#>5 2020年3月3日2009年3月15日CES00000000001
#>6 2020年2月152463日修正后的CES00000000001
由(v0.3.0)于2020-08-07创建,我认为您只需将字符串设置为默认格式之一,即可被读取为.yearmon
。从文档中,其中一个是“%b%Y”
,因此您可以执行以下操作:
库(dplyr)
图书馆(动物园)
df%>%变异(日期=as.yearmon(粘贴(periodName,year)))
#>#tibble:6 x 8
#>年份期间期间名称最新值脚注序列ID日期
#>
#>1 2020年7月7日真实139582“P初步”CES00000000001 2020年7月
#>2020年6月13日2016年6月19日“P初步”CES00000000001 2020年6月
#>3 2020年5月13日28英寸2020年5月3日
#>4 2020年4月4日2014年4月13日303英寸CES00000000001 2020年4月
#>5 2020年3月3日2009年3月15日“CES00000000001 2020年3月
#>6 2020年2月15日2002年2月15日463“C修正”CES00000000001 2020年2月
数据
df年期间期间期间名称最新值脚注序列ID
#>2020年7月1日2007年7月真实139582 P初步CES00000000001
#>2 2020年6月137819日中期CES00000000001
#>3 2020年5月13日2018年5月13日CES00000000001
#>4 2020年4月4日2013年4月13日CES00000000001
#>5 2020年3月3日2009年3月15日CES00000000001
#>6 2020年2月152463日修正后的CES00000000001
由(v0.3.0)创建于2020-08-07这里是您问题的另一个解决方案
library(tidyverse)
library(lubridate)
df2 <- df %>%
mutate(date2 = paste0(year, "-", periodName, "-01"),
date2 = as.Date(date2, format = "%Y-%B-%d"),
date2 = str_replace_all(date2, regex("(-01)"), ""))
# year period periodName latest value footnotes seriesID date2
# 1 2020 M07 July true 139582 P preliminary CES0000000001 2020-07
# 2 2020 M06 June <NA> 137819 P preliminary CES0000000001 2020-06
# 3 2020 M05 May <NA> 133028 CES0000000001 2020-05
# 4 2020 M04 April <NA> 130303 CES0000000001 2020-04
# 5 2020 M03 March <NA> 151090 CES0000000001 2020-03
# 6 2020 M02 February <NA> 152463 C corrected CES0000000001 2020-02
库(tidyverse)
图书馆(lubridate)
df2%
突变(日期2=0(年份,“-”,周期名称,“-01”),
date2=as.Date(date2,格式=“%Y-%B-%d”),
date2=str_replace_all(date2,regex((-01)”,“”)
#年份期间期间名称最新值脚注序列ID日期2
#1 2020 M07年7月真实139582 P初步CES00000000001 2020-07
#2020年6月137819日2020年6月2日初步CES00000000001 2020-06
#3 2020年5月133028日2020-05年5月CES00000000001
#4 2020年4月130303日2020-04年4月130303日CES00000000001
#2020年3月5日2009年3月15日CES00000000001 2020-03
#6 2020年2月152463年2月1520日修正CES00000000001 2020-02
这是您问题的另一个解决方案
library(tidyverse)
library(lubridate)
df2 <- df %>%
mutate(date2 = paste0(year, "-", periodName, "-01"),
date2 = as.Date(date2, format = "%Y-%B-%d"),
date2 = str_replace_all(date2, regex("(-01)"), ""))
# year period periodName latest value footnotes seriesID date2
# 1 2020 M07 July true 139582 P preliminary CES0000000001 2020-07
# 2 2020 M06 June <NA> 137819 P preliminary CES0000000001 2020-06
# 3 2020 M05 May <NA> 133028 CES0000000001 2020-05
# 4 2020 M04 April <NA> 130303 CES0000000001 2020-04
# 5 2020 M03 March <NA> 151090 CES0000000001 2020-03
# 6 2020 M02 February <NA> 152463 C corrected CES0000000001 2020-02
库(tidyverse)
图书馆(lubridate)
df2%
突变(日期2=0(年份,“-”,周期名称,“-01”),
date2=as.Date(date2,格式=“%Y-%B-%d”),
date2=str_replace_all(date2,regex((-01)”,“”)
#年份期间期间名称最新值脚注序列ID日期2
#1 2020 M07年7月真实139582 P初步CES00000000001 2020-07
#2020年6月137819日2020年6月2日初步CES00000000001 2020-06
#3 2020年5月133028日2020-05年5月CES00000000001
#4 2020年4月130303日2020-04年4月130303日CES00000000001
#2020年3月5日2009年3月15日CES00000000001 2020-03
#6 2020年2月152463年2月1520日修正CES00000000001 2020-02
谢谢您,但我想将期间和年份合并,以获得类似的结果:2020-01、2020-02。。等等当我尝试将期间和年份与您的代码相结合时,我得到了NAcolumn@JoseMontoya“我的代码”转换为
格式,默认情况下会像Jul 2020
那样打印。。这是as.yearmon
的正确输出。如果您完全使用我的代码(包括我从您的问题中获取的数据),您仍然会得到错误吗?如果是,也许
year period periodName latest value footnotes seriesID **date**
<dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <yearmon>
1 2020 M07 July true 139582 "P preliminary" CES0000000001 2020-07
2 2020 M06 June NA 137819 "P preliminary" CES0000000001 2020-06
3 2020 M05 May NA 133028 "" CES0000000001 2020-05
4 2020 M04 April NA 130303 "" CES0000000001 2020-04
5 2020 M03 March NA 151090 "" CES0000000001 2020-03
6 2020 M02 February NA 152463 "C corrected" CES0000000001 2020-02
library(tidyverse)
library(lubridate)
df2 <- df %>%
mutate(date2 = paste0(year, "-", periodName, "-01"),
date2 = as.Date(date2, format = "%Y-%B-%d"),
date2 = str_replace_all(date2, regex("(-01)"), ""))
# year period periodName latest value footnotes seriesID date2
# 1 2020 M07 July true 139582 P preliminary CES0000000001 2020-07
# 2 2020 M06 June <NA> 137819 P preliminary CES0000000001 2020-06
# 3 2020 M05 May <NA> 133028 CES0000000001 2020-05
# 4 2020 M04 April <NA> 130303 CES0000000001 2020-04
# 5 2020 M03 March <NA> 151090 CES0000000001 2020-03
# 6 2020 M02 February <NA> 152463 C corrected CES0000000001 2020-02