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

如何用R(优先dplyr)提取单列州名到对应评级分组上方

R语言实现方案(优先使用dplyr生态)

需要配合使用tidyverse生态下的dplyr、tidyr、stringr三个常用包,代码如下:
首先加载依赖:

library(dplyr)
library(tidyr)
library(stringr)

核心处理代码:

df_result <- df %>%
  # 新增原始行号,保证处理后顺序不混乱
  mutate(original_idx = row_number()) %>%
  # 拆分原字段为州名和评级,无法拆分的区域名、空值自动填充NA
  separate(Level, into = c("state", "rating"), sep = ": ", remove = FALSE, fill = "right") %>%
  # 标记每个州首次出现Good评级的行
  group_by(state) %>%
  mutate(first_good_flag = rating == "Good" & row_number() == 1) %>%
  ungroup() %>%
  # 生成最终的行内容:首次Good行先插入州名、再放评级;普通评级行仅放评级;其余行保留原值
  reframe(
    Level = case_when(
      first_good_flag ~ list(c(state, rating)),
      !is.na(rating) ~ list(rating),
      TRUE ~ list(Level)
    ),
    original_idx = original_idx
  ) %>%
  # 展开列表得到所有行
  unnest(Level) %>%
  # 按原始顺序排序
  arrange(original_idx) %>%
  # 仅保留需要的结果列
  select(Level)

结果验证:
运行以下代码可确认输出和预期完全一致:

all.equal(df_result, df_desired)
# 返回 TRUE 即代表结果符合要求

内容的提问来源于stack exchange,提问作者Natasha R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:05