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

如何用mutate across结合paste0批量更新多列并合并A1:B5?

解决方案

可以用dplyr的mutate(across())配合tidyr的unite()来实现,步骤如下:

  1. 先加载所需包:
library(tidyverse)
  1. 替换非NA值为列名首字母,并合并列:
df_processed <- df %>%
  # 针对A1到B5的列,替换非NA值为列名首字母
  mutate(across(A1:B5, ~ifelse(!is.na(.), str_sub(cur_column(), 1, 1), .))) %>%
  # 合并A1到B5列,生成新列combined,忽略NA值
  unite(col = combined, A1:B5, sep = "", na.rm = TRUE)

代码解释

  • across(A1:B5, ...):指定对A1到B5的所有列进行批量操作
  • ifelse(!is.na(.), str_sub(cur_column(), 1, 1), .):判断当前单元格非NA时,用cur_column()获取当前列名,再通过str_sub()截取首字母替换原数值;NA则保持不变
  • unite(...):将处理后的A1到B5列合并为一个新列,sep = ""表示合并时无分隔符,na.rm = TRUE会自动剔除合并过程中的NA值

处理后的结果示例:

> df_processed
# A tibble: 3 × 2
  ID    combined
  <chr> <chr>   
1 Tom   AD      
2 Jerry A       
3 Kate  AB      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:06