首页 > 解决方案 > 如何使用 strsplit() 重新格式化列

问题描述

在我的 r 数据框中,我有一列如下所示:

df$Year

"Cumulative.12.2013.Actual"
"Cumulative.12.2014.Actual"
"Cumulative.12.2015.Actual"
"Cumulative.12.2016.Actual"
"Cumulative.12.2017.Actual"
"Cumulative.12.2018.Actual"
"Cumulative.12.2019.Actual"
"Cumulative.5.2020.Actual"

我正在尝试重新格式化该列,以便我只包含日期。它应该看起来像:

df$Year

"12/2013"
"12/2014"
"12/2015"
"12/2016"
"12/2017"
"12/2018"
"12/2019"
"5/2020"

我怎样才能做到这一点?我尝试在一行中完成所有操作,但它返回的df$Year只是"12/2013"所有行:

df$Year< - paste(strsplit(df$Year, ".", fixed=TRUE)[[1]][2], strsplit(x, ".", fixed=TRUE)[[1]][3], sep="/")

标签: r

解决方案


这是一个选项。

df$Year %<>% 
  as.character %>% 
  strsplit(.,"([a-zA-Z]\\.)|(\\.[a-zA-Z])") %>% 
  sapply( .,function(i) i[2] %>% 
  gsub(".","/",.,fixed=T))


推荐阅读