如何在 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 创建
我有以下结构的值: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 创建