Мы можем использовать separate
, чтобы разделить 'Class' на два столбца ('Primary_Class', 'Subclass'), указав sep
как ноль или более пробелов (\\s*
), за которыми следуют |
и ноль или больше пробелов (\\s*
), затем создайте «Мультикласс», проверив, являются ли «Подкласс» NA
элементами
library(dplyr)
library(tidyr)
separate(df1, Class, into = c('Primary_Class', 'Subclass'),
'\\s*\\|\\s*', extra = 'merge') %>%
mutate(Multiclass = +(!is.na(Subclass)))
# Race Primary_Class Subclass Level AC Multiclass
#1 Human Fighter Wizard 10 15 1
#2 Elf Wizard <NA> 8 10 0
#3 Human Rogue <NA> 6 12 0
#4 Dwarf Barbarian <NA> 15 18 0
data
df1 <- structure(list(Race = c("Human", "Elf", "Human", "Dwarf"),
Class = c("Fighter | Wizard",
"Wizard", "Rogue", "Barbarian"), Level = c(10L, 8L, 6L, 15L),
AC = c(15L, 10L, 12L, 18L)), class = "data.frame", row.names = c(NA,
-4L))