在R语言中拆分分数格式数据为两列的实现方法
如何在R语言中将分数形式的血压值拆分为上下限两列?
没问题,我来给你分享几个在R里实现这个需求的实用方法,都是日常处理这类字符串拆分常用的手段:
首先先构造你的示例数据框,方便后续演示:
df <- data.frame(B.P = c("127/80", "130/98"), stringsAsFactors = FALSE)
方法一:使用tidyverse套件的separate()函数(最简洁)
这是处理这类列拆分需求最推荐的方式,需要先加载tidyr包(属于tidyverse生态,如果你还没安装可以先跑install.packages("tidyverse")):
library(tidyr) df_split <- separate(df, col = B.P, into = c("upper", "lower"), sep = "/", remove = FALSE)
参数说明:
col:指定要拆分的目标列(这里是B.P)into:定义拆分后生成的新列名称,用向量传入sep:设置拆分的分隔符(这里是/)remove = FALSE:保留原来的B.P列,如果不需要原列可以去掉这个参数
方法二:基础R原生实现(无需额外安装包)
如果不想加载第三方包,用基础R的函数也能轻松搞定:
# 按"/"拆分每个字符串,得到列表后转成矩阵 split_vals <- do.call(rbind, strsplit(df$B.P, "/")) # 合并原数据框和拆分后的数值列(转成数值类型避免字符型) df_split <- cbind(df, upper = as.numeric(split_vals[,1]), lower = as.numeric(split_vals[,2]))
最后查看拆分后的结果,就和你期望的格式完全一致了:
print(df_split) # B.P upper lower # 1 127/80 127 80 # 2 130/98 130 98
内容的提问来源于stack exchange,提问作者ajax
相关产品推荐
相关产品推荐

