如何基于值将一列拆分为多列(R中的规范化)[重复]

问题描述 投票:-1回答:2

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

Qualification_Code200-N137-P-2200-N136-P-3200-N136-P-2200-N135-V-1300-G112-M-2

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

教师课程校园年级200 N137 P 2200 N136 P 3200 N136 P 2200 N135 V 1300 G112 M 2

是否有一些内置功能或允许该功能的软件包?我曾尝试使用RSQLite进行此操作,但我的SQL技能却相当落后(我是一名数据科学新人,几乎没有任何编码经验)。感谢您的帮助。

r dataframe normalization
2个回答
0
投票

使用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")

0
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.