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

R语言如何按列值包含的特定字符串生成family和genus新列

你可以直接在原有mutate()逻辑上补充genus列的判断规则即可,注意匹配sp.时需要对正则元字符.做转义,避免误匹配:

library(tidyverse)

# 原始数据框
df <- data.frame(name1 = c("Amydrium sp. 01", "Aporosa sp.", "Arecaceae sp. 02","Adenia macrophylla"))

# 新增两列的完整语法
df <- df %>% 
  mutate(
    family = case_when(
      str_detect(name1, "ceae") ~ name1,
      .default = NA_character_
    ),
    genus = case_when(
      str_detect(name1, "sp\\.") & !str_detect(name1, "ceae") ~ name1,
      .default = NA_character_
    )
  )

运行后输出结果与预期完全一致:

name1           family            genus
1    Amydrium sp. 01             <NA>  Amydrium sp. 01
2        Aporosa sp.             <NA>      Aporosa sp.
3   Arecaceae sp. 02 Arecaceae sp. 02             <NA>
4 Adenia macrophylla             <NA>             <NA>

如果你使用的dplyr版本低于1.1.0,不支持.default参数,可以替换为兼容写法:

df %>% 
  mutate(
    family = case_when(
      str_detect(name1, "ceae") ~ name1,
      TRUE ~ NA_character_
    ),
    genus = case_when(
      str_detect(name1, "sp\\.") & !str_detect(name1, "ceae") ~ name1,
      TRUE ~ NA_character_
    )
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:06:03