R 如何将从模式开始的特定观察移动到新列

R 如何将从模式开始的特定观察移动到新列,r,R,我有以下数据 charge <- c('UUW SHOOT AT MV PER BLDG','UNLAWFUL POSS FIREARM','lation Management Report','ARMED CRIMINAL ACTION' ,'ARMED CRIMINAL ACTION') casecol1 <- c('1922-3','F','F','F','F') casecol2 <- c('DETAIL','1822-3','','','1522-4') df &

我有以下数据

charge <- c('UUW SHOOT AT MV PER BLDG','UNLAWFUL POSS FIREARM','lation Management Report','ARMED CRIMINAL ACTION'
,'ARMED CRIMINAL ACTION')
casecol1 <- c('1922-3','F','F','F','F')
casecol2 <- c('DETAIL','1822-3','','','1522-4')


df <- data.frame(charge,casecol1,casecol2)

                    charge casecol1 casecol2
1 UUW SHOOT AT MV PER BLDG   1922-3   DETAIL
2    UNLAWFUL POSS FIREARM        F   1822-3
3 lation Management Report        F         
4    ARMED CRIMINAL ACTION        F         
5    ARMED CRIMINAL ACTION        F   1522-4

我如何才能做到这一点?

这将适用于任何数量的
'casecol'

library(tidyverse)

df %>%
  select(starts_with('casecol')) %>%
  map(~str_extract(., '\\d{4}-\\d')) %>%
  reduce(coalesce) -> df$newcol

df
#                    charge casecol1 casecol2 newcol
#1 UUW SHOOT AT MV PER BLDG   1922-3   DETAIL 1922-3
#2    UNLAWFUL POSS FIREARM        F   1822-3 1822-3
#3 lation Management Report        F            <NA>
#4    ARMED CRIMINAL ACTION        F            <NA>
#5    ARMED CRIMINAL ACTION        F   1522-4 1522-4
库(tidyverse)
df%>%
选择(以('casecol')开头)%>%
map(~str_extract(,'\\d{4}-\\d'))%>%
减少(合并)->df$newcol
df
#计费casecol1 casecol2 newcol
#根据1922-3号楼详图1922-3,在MV处进行1次UUW拍摄
#2非法POSS枪支F 1822-3 1822-3
#3.管理报告F
#4武装犯罪行动F
#5武装犯罪行动F 1522-4 1522-4
library(tidyverse)

df %>%
  select(starts_with('casecol')) %>%
  map(~str_extract(., '\\d{4}-\\d')) %>%
  reduce(coalesce) -> df$newcol

df
#                    charge casecol1 casecol2 newcol
#1 UUW SHOOT AT MV PER BLDG   1922-3   DETAIL 1922-3
#2    UNLAWFUL POSS FIREARM        F   1822-3 1822-3
#3 lation Management Report        F            <NA>
#4    ARMED CRIMINAL ACTION        F            <NA>
#5    ARMED CRIMINAL ACTION        F   1522-4 1522-4