【问题标题】:How to split one column into multiple columns based on value (normaliztion in R) [duplicate]如何根据值将一列拆分为多列(R中的标准化)[重复]
【发布时间】:2020-06-27 07:38:52
【问题描述】:

我在 R 数据框中有一列值,其中包含格式为 Faculty-Program-Campus-YearLevel 的资格代码。示例如下:

资格代码
200-N137-P-2
200-N136-P-3
200-N136-P-2
200-N135-V-1
300-G112-M-2

我想要的是使用 R 将 Qualification_Code 拆分为单独的 Faculty/Program/Campus/Level 列,即理想情况下我想要以下结果:

教师计划校园年级
200 N137 P 2
200 N136 P 3
200 N136 P 2
200 N135 V 1
300 G112 M 2

是否有一些内置功能或允许此功能的包?我已经尝试使用 RSQLite 进行此操作,但我的 SQL 技能相当不发达(我是一名数据科学大一新生,几乎没有编码经验)。感谢您的帮助。

【问题讨论】:

    标签: r dataframe normalization


    【解决方案1】:

    使用strsplit

    res <- setNames(do.call(rbind.data.frame, 
            strsplit(dat$Qualification_Code, "-")),
            c("Faculty", "Program", "Campus", "YearLevel"))
    res
    #   Faculty Program Campus YearLevel
    # 1     200    N137      P         2
    # 2     200    N136      P         3
    # 3     200    N136      P         2
    # 4     200    N135      V         1
    # 5     300    G112      M         2
    

    数据

    dat <- structure(list(Qualification_Code = c("200-N137-P-2", "200-N136-P-3", 
    "200-N136-P-2", "200-N135-V-1", "300-G112-M-2")), row.names = c(NA, 
    -5L), class = "data.frame")
    

    【讨论】:

      【解决方案2】:

      使用read.table

      read.table(text = df$Qualification_Code, sep = "-",
                 col.names = c("Faculty", "Program", "Campus", "YearLevel"))
      
      #   Faculty Program Campus YearLevel
      # 1     200    N137      P         2
      # 2     200    N136      P         3
      # 3     200    N136      P         2
      # 4     200    N135      V         1
      # 5     300    G112      M         2
      

      【讨论】:

        猜你喜欢
        • 2021-09-21
        • 2021-09-03
        • 2019-08-07
        • 2013-12-03
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-29
        相关资源
        最近更新 更多