【发布时间】:2021-12-28 14:08:27
【问题描述】:
我有一个数据框,其中一些列被命名为日期。例如,像这样:
df_1 <- data_frame("id" = c('a','b','c','d'),
"gender" = c('m','f','f','m'),
"05/16/2017" = c(1,2,3,4),
"11/08/2016" = c(1,2,3,4),
"08/15/2016" = c(1,2,3,4))
df_1
# A tibble: 4 x 5
id gender `05/16/2017` `11/08/2016` `08/15/2016`
<chr> <chr> <dbl> <dbl> <dbl>
1 a m 1 1 1
2 b f 2 2 2
3 c f 3 3 3
4 d m 4 4 4
对于当前为日期的列,格式为mm/dd/yyyy,我想提取mm 和yyyy 组件并使用它们将列重命名为election_yyyy_mm。 IE。我最终会得到如下所示的 df:
df_2 <- data_frame("id" = c('a','b','c','d'),
"gender" = c('m','f','f','m'),
"election_2017_05" = c(1,2,3,4),
"election_2016_11" = c(1,2,3,4),
"election_2016_08" = c(1,2,3,4))
df_2
# A tibble: 4 x 5
id gender election_2017_05 election_2016_11 election_2016_08
<chr> <chr> <dbl> <dbl> <dbl>
1 a m 1 1 1
2 b f 2 2 2
3 c f 3 3 3
4 d m 4 4 4
我想我有一个涉及stringr 的部分解决方案,但目前我必须运行str_extract 两次才能分别获得mm 和yyyy 组件。我也不确定如何将向量传递给rename()。
这是我目前拥有的两个 sn-ps:
stringr::str_extract(c("05/16/2017", "11/08/2016", "08/15/2016"), "^[^/]+")
[1] "05" "11" "08"
stringr::str_extract(c("05/16/2017", "11/08/2016", "08/15/2016"), "[0-9]{4}")
[1] "2017" "2016" "2016"
谁能帮我a)在一次调用str_extract(或其他函数)中提取两个元素(yyyy和mm位),b)将结果向量传递给rename?
【问题讨论】: