如何在 R 中的多列中拆分具有多个分隔符的一列?

How to split one column whith multiples delimiters in multiple columns in R?

我有以下结构的值:string OR string_string.interger

例如:

df<-data.frame(Objs=c("Windows","Door_XYZ.1", "Door_XYY.1", "Chair_XYYU.2" ))
Objs
Windows
Door_XYZ.1
Door_XYY.1
Chair_XYYU.2

使用命令 split()、separate() 或类似的命令,我需要生成一个类似于此的数据帧:

观察:必须对字符“_”和“.”执行拆分

Objs IND TAG Control
Windows NA NA NA
Door_XYZ.1 Door XYZ 1
Door_XYY.1 Door XYY 1
Chair_XYYU.2 Chair XYYU 2

@Tommy 在类似的上下文中提出了最接近的解决方案。

df %>%  data.frame(.,do.call(rbind,str_split(.$Objs,"_")))

separate()sep 参数的默认值几乎可以得到您需要的结果。从 IND 列中删除 Windows 条目也需要条件突变。

library(tidyverse)
df <- data.frame(Objs=c("Windows","Door_XYZ.1", "Door_XYY.1", "Chair_XYYU.2" ))

df %>% 
  separate(Objs, into = c("IND", "TAG", "Control"), remove = FALSE, fill = "right") %>% 
  mutate(IND = if_else(Objs == IND, NA_character_, IND))
#>           Objs   IND  TAG Control
#> 1      Windows  <NA> <NA>    <NA>
#> 2   Door_XYZ.1  Door  XYZ       1
#> 3   Door_XYY.1  Door  XYY       1
#> 4 Chair_XYYU.2 Chair XYYU       2

reprex package (v1.0.0)

于 2022-05-05 创建