我知道这是一个非常愚蠢的问题,但它让我疯狂。
我正在尝试在数据框中合并两列。
一年是一年,有2006年,2007年等数字
另一列是月份,数字来自1-12。
我想创建一个名为date的列,如下所示: 2012年和12年成为201212 2012年和4年成为201204
这应该很简单,但我似乎无法在2012和4之间获得0 !!!!!!
数据框称为x。我尝试过多种变体:
attach(x)
x$mymonth <- as.character(mymonth)
x[!(mymonth=="10"|mymonth=="11"|mymonth=="12"),]$mymonth <- paste0("0",x[!(mymonth=="10"|mymonth=="11"|mymonth=="12"),]$mymonth)
x$mymonth <- as.character(mymonth)
x$date <- paste0(as.character(year),as.character(mymonth),"")
detach(x)
这不起作用。
答案 0 :(得分:2)
我们可以使用sprintf
并指定相应的fmt
。
df1$date <- sprintf("%04d%02d", df1$year, df1$month)
df1$date
#[1] "201501" "201502" "201503" "201504" "201505" "201506" "201507" "201508"
#[9] "201509" "201510" "201511" "201512"
或另一个选项是来自str_pad
的{{1}},然后是library(stringr)
列
paste
注意:建议不要使用library(stringr)
paste0(df1$year, str_pad(df1$month, width=2, pad=0))
。相反,我们可以使用attach
,with
等。
within