0

このようなD&Dキャラクターに関するデータセットがあります

Race   Class              Level   AC
Human  Fighter | Wizard    10     15
Elf    Wizard              8      10
Human  Rogue               6      12
Dwarf  Barbarian           15     18

「|」で示されるマルチクラス化されているクラスを分離したい また、キャラクターがマルチクラスでない場合、そのスロットに「NA」または「なし」を配置したい

Race   Primary_Class      Level   AC    Subclass   Multiclass
Human  Fighter             10     15    Wizard         1
Elf    Wizard              8      10    NA             0
Human  Rogue               6      12    NA             0
Dwarf  Barbarian           15     18    NA             0

これを行うためのきれいな方法はありますか?

4

3 に答える 3

0

separate「クラス」を 2 つの列 (「Primary_Class」、「サブクラス」) に分割するには、sep0 個以上のスペース ( ) と\\s*それに続く|0 個以上のスペース ( ) を指定し\\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

データ

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))
于 2020-03-15T20:54:54.127 に答える