У меня есть следующий столбец в моем фрейме данных, который содержит сборы
library(dplyr)
library(stringr)
df<-data.frame(charge=c("trespass-1st degree",
"trespass - 1st degree","rape or attempted rape - 1st degree",
"rape or attempt rape 1st degree","Assault 1st","Assault 1st"))
charge
1 trespass-1st degree
2 trespass - 1st degree
3 rape or attempted rape - 1st degree
4 rape or attempt rape 1st degree
5 Assault 1st
6 Assault 1st
Я хочу убедиться, что определенные сборы, которые имеют ошибки ввода данных, стандартизированы. например, trespass-1st degree
против trespass - 1st degree
и rape or attempted rape - 1st degree
против rape or attempt rape 1st degree
Я попробовал следующее
df%>%
mutate(charge=
case_when(str_detect(charge, "^trespass-1st") ~ "Trespass 1st",
str_detect(charge,"^rape or attempted rape")~"Rape 1st"))
, которое дает мне следующий вывод
charge
1 Trespass 1st
2 <NA>
3 Rape 1st
4 <NA>
5 <NA>
6 <NA>
Как мне убедиться, что если присутствуют только две строки, такие как «tresspass» и «1st», то это будет помечено как «Trespass 1st», а если «rape» и «1st» присутствует в столбце «Заряд», то это будет помечено как « Rape 1st "
Для получения следующего df
charge
1 Trespass 1st
2 Trespass 1st
3 Rape 1st
4 Rape 1st
5 Assault 1st
6 Assault 1st