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

如何在R中用dplyr的separate_rows函数按条件拆分数据框行

解决方案

你之前报错的原因是separate_rows是数据框级别的操作函数,它返回的是整个数据框,而mutate需要的是对列的元素级操作(返回向量/列表),所以不能在if_else里直接嵌套separate_rows。

用一行代码实现需求的核心思路是:先把需要拆分的行的name列转成列表格式(每个元素是拆分后的字符向量),不需要拆分的行保持单个元素的列表,再通过unnest展开列表成多行。具体代码如下:

library(tidyverse)

df %>% mutate(name = if_else(grade == 12, str_split(name, ","), list(name))) %>% unnest(name)

代码说明

  • str_split(name, ","):对grade=12的行,把name按逗号拆分成字符向量,存储为列表元素
  • list(name):对非grade=12的行,把单个name值包装成单元素列表,保证列类型统一
  • unnest(name):将列表列展开,每个列表元素对应一行,非拆分的行则保持原样

示例验证

假设你的数据框是:

df <- tibble(
  grade = c(10, 12, 12, 11),
  name = c("Alice", "Bob,Charlie", "David", "Eve")
)

运行代码后输出:

# A tibble: 5 × 2
  grade name   
  <dbl> <chr>  
1    10 Alice  
2    12 Bob    
3    12 Charlie
4    12 David  
5    11 Eve    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:02