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

在R语言中合并数据框因子水平及删除特定因子实例

没问题,这两个需求在R里都能轻松实现,我分两部分给你详细说明:

1. 合并"Fatal injury"和"Non-fatal injury"为一个新水平

最简洁的方式是用forcats包的fct_collapse()函数(属于tidyverse生态,处理因子变量特别顺手):

# 先安装并加载forcats(如果还没装的话)
install.packages("forcats")
library(forcats)

# 合并指定水平为新的"Injury"水平
OttawaCollisions$Collision_Classification <- fct_collapse(
  OttawaCollisions$Collision_Classification,
  "Injury" = c("Fatal injury", "Non-fatal injury")
)

# 验证结果
head(OttawaCollisions$Collision_Classification)
levels(OttawaCollisions$Collision_Classification)

如果不想额外安装包,用基础R也能搞定:

# 直接修改因子水平
target_levels <- c("Fatal injury", "Non-fatal injury")
levels(OttawaCollisions$Collision_Classification)[levels(OttawaCollisions$Collision_Classification) %in% target_levels] <- "Injury"

操作完成后,你的因子变量就只剩Injury和P.D. only两个水平啦。

2. 直接删除所有属于"Fatal injury"的实例

这个需求可以用基础R的subset()函数,或者tidyverse的filter()函数,两种方法都能直接移除对应行:

# 基础R方法
OttawaCollisions_clean <- subset(OttawaCollisions, Collision_Classification != "Fatal injury")

# tidyverse方法(需要加载dplyr)
library(dplyr)
OttawaCollisions_clean <- OttawaCollisions %>%
  filter(Collision_Classification != "Fatal injury")

如果删除后想清理掉空的因子水平,可以再加一步:

OttawaCollisions_clean$Collision_Classification <- droplevels(OttawaCollisions_clean$Collision_Classification)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:59:32