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

如何在RStudio中基于Regione列创建Posizione新列

在R中基于Regione列创建Posizione新列的解决方案

方法1:使用dplyr的case_when()(推荐,可读性强)

如果你的数据框是df,可以通过dplyr包的case_when()函数快速实现规则映射,这是tidyverse生态中处理多条件分支的常用方式:

# 先加载dplyr包(未安装则先运行install.packages("dplyr"))
library(dplyr)

df <- df %>%
  mutate(Posizione = case_when(
    Regione %in% c("Lombardia", "Friuli-Venezia Giulia") ~ "Nord",
    Regione == "Lazio" ~ "Centro",
    Regione == "Sicilia" ~ "Sud",
    # 可选:处理未匹配的Regione值,比如设为NA或其他标识
    TRUE ~ NA_character_
  ))

方法2:使用base R的嵌套ifelse()

如果不想加载额外包,base R的ifelse()也能实现需求:

df$Posizione <- ifelse(
  df$Regione %in% c("Lombardia", "Friuli-Venezia Giulia"),
  "Nord",
  ifelse(
    df$Regione == "Lazio",
    "Centro",
    ifelse(
      df$Regione == "Sicilia",
      "Sud",
      NA_character_ # 处理未匹配值
    )
  )
)

方法3:使用因子映射

如果Regione的取值固定,也可以先将其转为因子,再通过levels映射:

# 定义映射规则
region_map <- c(
  "Lombardia" = "Nord",
  "Friuli-Venezia Giulia" = "Nord",
  "Lazio" = "Centro",
  "Sicilia" = "Sud"
)

# 转换为因子并映射
df$Posizione <- as.character(factor(df$Regione, levels = names(region_map), labels = region_map))
# 未匹配的Regione值会自动转为NA

注意事项

  • 确保Regione列的文本与规则完全一致(大小写、空格、连字符都要匹配),若有不一致可先通过str_trim()或tolower()处理。
  • 上述代码均加入了未匹配值的处理(设为NA),你可根据需求修改为其他值(比如"Altro")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:32:05