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