代码之家  ›  专栏  ›  技术社区  ›  cnauber

如何在分隔符中的多个列中拆分一个包含多个分隔符的列?

  •  0
  • cnauber  · 技术社区  · 2 年前

    字符串或字符串。英杰

    前任:

    df<-data.frame(Objs=c("Windows","Door_XYZ.1", "Door_XYY.1", "Chair_XYYU.2" ))
    
    Objs
    Windows
    门。1.
    门开了。1.
    主席xyu。2.

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

    Obs:必须对字符“”和“.”执行拆分

    Objs 印第安纳州 标签 控制
    Windows
    门。1. XYZ 1.
    门开了。1. XYY 1.
    主席xyu。2. 椅子 XYYU 2.

    在类似的背景下,@Tommy提出了最接近的解决方案。

    df %>%  data.frame(.,do.call(rbind,str_split(.$Objs,"_")))
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   markdly    2 年前

    的默认值 sep separate() 将几乎得到你需要的结果。从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
    

    于2022年5月5日由 reprex package (v1.0.0)