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

在R中根据不同条件实现行值拼接的技术需求

R语言按条件拼接指定行字符串的解决方案

需求说明

根据Flag列标记处理数据框:

  • 标记为0的行直接保留
  • 以B开头、E结尾的段落(中间可包含任意1标记行),需将段落内(含B、E)的Strings按顺序拼接,仅保留拼接后的B行,删除段落内的1和E行

示例数据

set.seed(128)
df2 <- data.frame(Strings = sample(letters, 17, replace = T), 
                  Flag = c(0,"B",1,1,"E","B","E","B","E",0,"B",1,1,1,"E",0,0))

解决方案

使用dplyr结合tidyr实现分组拼接,步骤如下:

  1. 为每个段落/独立行创建分组标识:遇到B开启新段落组,0标记行单独成组
  2. 按分组拼接Strings内容
  3. 过滤保留需要的行(0标记行和拼接后的段落起始行)

代码实现:

library(dplyr)
library(tidyr)

# 创建分组ID:区分独立0行和各B-E段落
df2 <- df2 %>%
  mutate(group_id = cumsum(Flag == "B" | (Flag == "0" & lag(Flag, default = "") != "0")))

# 分组拼接+过滤整理
result_df <- df2 %>%
  group_by(group_id) %>%
  summarise(
    Result = paste(Strings, collapse = " "),
    Flag = first(Flag)
  ) %>%
  filter(Flag %in% c("0", "B")) %>%
  select(Result) %>%
  ungroup()

# 查看最终结果
print(result_df)

输出结果

# A tibble: 8 × 1
  Result       
  <chr>        
1 d            
2 r q r v      
3 f y          
4 u c          
5 x            
6 h w x t j    
7 d            
8 j            

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:15:43