R言語による医療データ分析

R言語によるデータ分析のオンラインコースを中心に、さまざまなデータ分析について記載してあります。

097 特殊加工:separateで列をわける

まとめ一覧

separateで列をうめる

  • 練習問題を再度みてみましよう。
  • 任意の文字列で列を分割するseparate関数を利用してみましょう。
dft <- tibble(
  target3 = c(
    "ope:A 4.5hr 80ml",
    "ope:B 3hr 10ml",
    "ope:C 12.5hr 100ml"
  )
)

dft
  • separate(data, col, into, sep)で利用します。
    • dataはデータフレーム、colはコラム名。
    • intoは、分割した後のコラム名、
    • sepは分割のしるしとなる文字列
dft %>% 
  separate(col = target3, 
           into = c("OPE","HR","ML"),
           sep=" ")
  • このように、スペース(\s)で3つのコラムに分割され、もともとのtarget3は消えて、そのかわり、intoで指定した、OPE, HR, MLが出現しています。
dft %>% 
  separate(col = target3, 
           into = c("OPE", "HR", "ML"), 
           sep=" ", remove = FALSE)
  • 尚、remove=FALSEとすることで、削除せずに残すことも可能です。

  • 課題:OPEコラムから、set_extractを使わずにオペ名を取り出してみましょう

dft %>% 
  separate(col = target3, 
           into = c("OPE", "HR", "ML"), 
           sep=" ") %>% 
  separate(col = OPE, 
           into = c("ope","opename"), 
           sep = ":") %>% 
  select(opename)
  • str_extractを利用すると、
dft %>% 
  mutate(opename = str_extract(target3,"(?<=:)\\w+"))
  • とより簡潔に書けますが、状況によっては、str_extractの正規表現が難しいケースもあり、そういう場合には、separateを利用することがよいと思います。

まとめ一覧