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

如何在tidyverse中反转逗号分隔内容后拆分列为多列

问题需求

我们需要先反转用, 分隔的字符串中元素的顺序(例如将“CA, SF”转为“SF, CA”),再将其拆分为多列。

示例数据与期望结果

library(tidyverse)

# 示例数据 
tbl <- tibble(
  letter = c("US, CA, SF","NYC", "Florida, Miami")
)

# 期望结果
tbl_desired <- tibble(
  country = c("US", NA, NA),
  state = c("CA", NA, "Florida"),
  city = c("SF", "NYC", "Miami")
)

修改后的代码实现

通过字符串拆分、反转、重新拼接的步骤,再配合拆分填充逻辑,可得到期望结果:

tbl %>%
  mutate(letter = str_split(letter, ", ") %>% map_chr(~ str_c(rev(.), collapse = ", "))) %>% 
  separate(letter, into = c("country", "state", "city"), sep = ", ", fill = "left")

代码说明

  • str_split(letter, ", "):将每个字符串按, 拆分为字符向量
  • map_chr(~ str_c(rev(.), collapse = ", ")):对拆分后的向量进行反转,再用, 拼接回字符串
  • separate(..., fill = "left"):拆分时左侧不足的位置自动填充NA,匹配期望结果的列对应关系

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:45:41