You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言拆分多列分隔值后如何实现每行仅保留一个观测值

R语言实现多列分隔值拆分每行仅保留一个观测的方案

可以通过长宽格式转换的逻辑实现需求,完整tidyverse实现代码如下:

library(tidyverse)

# 核心处理逻辑
data %>%
  select(Name, A, B, C) %>%
  # 将目标列转为长格式,避免多列同时拆分出现同一行多值
  pivot_longer(cols = c(A, B, C), names_to = "col_name", values_to = "col_val") %>%
  # 按分号拆分单个列的值为独立行
  separate_rows(col_val, sep = ";") %>%
  # 过滤空值与缺失值,仅保留有效观测
  filter(col_val != "" & !is.na(col_val)) %>%
  # 转回宽格式,每行仅保留一个非空观测
  pivot_wider(names_from = col_name, values_from = col_val) %>%
  # 可选步骤:将缺失值替换为空字符串,匹配示例输出格式
  mutate(across(c(A, B, C), ~replace_na(.x, "")))

逻辑说明

  1. 先把A、B、C三列从宽格式转为长格式,让每个列的所有值独立为单独的行,从根源上避免多列同时拆分导致同一行出现多个非空值的问题
  2. 仅对统一的值列做分隔拆分和空值过滤,保证所有留存的都是有效观测
  3. 转回宽格式时,每个有效观测会自动独占一行,其余列自动填充为缺失值,按需替换为空字符串即可匹配期望输出格式

用你给出的示例输入运行上述代码,可直接得到你需要的输出结果,同时兼容原始数据中多列本身包含多个分隔值的场景。

内容的提问来源于stack exchange,提问作者shadow6810

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:36:03