我在R
中有一个数据框,其中包含一堆列,其中两列表示年份和月份。我想重新格式化这两列,从而形成一个具有不同格式year_month的单个列。当前结构数据框df1
是:
... | ... | year | month | ... | ...
... | ... | 2000 | P01 | ... | ...
... | ... | 2000 | P02 | ... | ...
... | ... | 2000 | P03 | ... | ...
... | ... | 2000 | P04 | ... | ...
... | ... | 2000 | P05 | ... | ...
. | . | . | . | . | .
. | . | . | . | . | .
可以看出,数据框的月份列在每个月号前面都有字母P
。现在我要删除此字母P
重新格式化月份编号以表示月份名称而不是数字(如1月1日,2月份为02),然后将其加入年份列,以便与月份形成一个列和年份数据。因此,我想要这样的事情:
... | ... | month_year | ... | ...
... | ... | Jan. 2000 | ... | ...
... | ... | Feb. 2000 | ... | ...
... | ... | Mar. 2000 | ... | ...
... | ... | Apr. 2000 | ... | ...
... | ... | May. 2000 | ... | ...
. | . | . | . | .
. | . | . | . | .
如何重新格式化两列并将它们分成一列?
答案 0 :(得分:1)
使用“zoo”中的as.yearmon
和format
。
使用示例将评论转移到答案:
df1 <- data.frame(year = 2000, month = c("P01", "P02", "P03", "P04"))
# year month
# 1 2000 P01
# 2 2000 P02
# 3 2000 P03
# 4 2000 P04
library(zoo)
df2 <- transform(df1, yearmon = as.yearmon(paste0(year, sub("P", "-", month))))
df2$yearmon <- format(df2$yearmon, "%b. %Y")
df2
# year month yearmon
# 1 2000 P01 Jan. 2000
# 2 2000 P02 Feb. 2000
# 3 2000 P03 Mar. 2000
# 4 2000 P04 Apr. 2000