R语言如何将数据框中双字符列拆分提取为两个独立列
R实现双字符字段拆分方案
提供两种常用实现方式,可根据你的使用习惯选择:
基础R实现
不需要加载额外包,直接通过字符截取函数实现:
# 你已有的初始数据框 df<-data.frame(ID=(1:5), column1=c("AA","GG","AG","AA","AT"), column2=c("AA","GG","AG","AA","AT"), stringsAsFactors=FALSE) # 1. 指定需要拆分的列 target_cols <- c("column1", "column2") # 2. 遍历拆分每一列 for (col_name in target_cols) { # 取第一位字符存为 原列名.A df[[paste0(col_name, ".A")]] <- substr(df[[col_name]], start = 1, stop = 1) # 取第二位字符存为 原列名.B df[[paste0(col_name, ".B")]] <- substr(df[[col_name]], start = 2, stop = 2) } # 3. 调整列顺序得到最终结果 df_final <- df[, c("ID", paste0(rep(target_cols, each = 2), c(".A", ".B")))]
运行后打印df_final即可得到你需要的输出格式。
tidyverse生态实现
如果你习惯使用dplyr+tidyr的语法,用separate函数更简洁:
library(dplyr) library(tidyr) df_final <- df %>% # 拆分column1,sep=1代表在第1个字符后拆分 separate(column1, into = c("column1.A", "column1.B"), sep = 1) %>% # 拆分column2 separate(column2, into = c("column2.A", "column2.B"), sep = 1)
separate函数默认会删除原始的待拆分列,如果你需要保留原始列,可添加参数remove = FALSE。
内容的提问来源于stack exchange,提问作者Marwah Al-kaabi
相关产品推荐
相关产品推荐

