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

如何在R语言中根据另一列值填充Category列的空白值

批量填充数据框中Category列的BLANK值

示例数据代码

category <- c("East","BLANK","NorthEast","BLANK","BLANK")
subcat <- c("East","North","SW","NE","SE")
data1 <- as.data.frame(category)
data1$subcat <- subcat

原始数据表格

CategorySubcat
EastEast
BLANKNorth
NorthEastSW
BLANKNE
BLANKSE

规则与需求

  • 规则:East类别对应subcat为East、North的行;NorthEast类别对应subcat为SW、NE、SE的行
  • 需求:批量将Category列中的BLANK值按上述规则填充,填充后的行用*标注(仅用于展示区分)

批量处理方案

方法1:Base R 实现

无需额外安装包,直接用基础R语法实现:

# 定义subcat到category的映射规则
cat_mapping <- list(
  East = c("East", "North"),
  NorthEast = c("SW", "NE", "SE")
)

# 生成subcat到category的反向映射表
reverse_map <- unlist(lapply(names(cat_mapping), function(cat) {
  setNames(rep(cat, length(cat_mapping[[cat]])), cat_mapping[[cat]])
}))

# 替换BLANK值
data1$category <- ifelse(data1$category == "BLANK", reverse_map[data1$subcat], data1$category)

方法2:dplyr 实现(可读性更强)

如果习惯使用tidyverse生态,用dplyr的case_when语法更直观:

library(dplyr)

data1 <- data1 %>%
  mutate(
    category = case_when(
      subcat %in% c("East", "North") ~ "East",
      subcat %in% c("SW", "NE", "SE") ~ "NorthEast",
      TRUE ~ category  # 保留原有非BLANK的Category值
    )
  )

处理后结果

CategorySubcat
EastEast
EastNorth
NorthEastSW
NorthEastNE
NorthEastSE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:24:39