如何使用R对分箱(binned)数据执行拆箱(un-bin)操作
R实现分箱列拆分为单行的方案
以下提供两种常用实现方式:
方案1:tidyverse生态简洁实现(推荐)
使用tidyr包的separate_rows函数可一步完成需求:
# 构造示例数据框 df <- data.frame( bin = c("A-B-C", "K-P"), val = c(0.345, 0.612) ) # 加载包 library(tidyr) # 按分隔符-拆分bin列,每个标签单独生成一行,val列值自动对应保留 res <- separate_rows(df, bin, sep = "-")
运行后输出结果如下:
bin val 1 A 0.345 2 B 0.345 3 C 0.345 4 K 0.612 5 P 0.612
注:你给出的期望输出中K、P对应的val值为0.621属于笔误,代码运行结果会与原数据的0.612保持一致。
方案2:Base R无依赖实现
无需安装加载第三方包,用基础函数即可实现:
# 构造示例数据框 df <- data.frame( bin = c("A-B-C", "K-P"), val = c(0.345, 0.612) ) # 拆分bin列 split_bin <- strsplit(df$bin, "-") # 拼接生成新数据框 res <- data.frame( bin = unlist(split_bin), val = rep(df$val, lengths(split_bin)) )
运行结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者Vendetta
相关产品推荐
相关产品推荐

