数据:
x <- factor( rep( c('P.D. only', 'Non-fatal injury' , 'fatal injury'), 2) )
x
# [1] P.D. only Non-fatal injury fatal injury P.D. only
# [5] Non-fatal injury fatal injury
# Levels: fatal injury Non-fatal injury P.D. only
代码:您可以使用labels 参数重命名关卡。忽略重复级别的警告。这里Non-fatal injury 和fatal injury 与Fatalities 组合在一起。最后,使用droplevels() 函数删除重复的关卡。
x <- factor( x = x,
levels = c('P.D. only', 'Non-fatal injury' , 'fatal injury'),
labels = c('P.D. only', 'Fatalities', 'Fatalities'))
# [1] P.D. only Fatalities Fatalities P.D. only Fatalities Fatalities
# Levels: P.D. only Fatalities Fatalities
droplevels(x)
# [1] P.D. only Fatalities Fatalities P.D. only Fatalities Fatalities
# Levels: P.D. only Fatalities
编辑:根据您的数据框名称组合代码
OttawaCollisions$CollisionClass <- factor( x = OttawaCollisions$CollisionClass,
levels = c('P.D. only', 'Non-fatal injury' , 'fatal injury'),
labels = c('P.D. only', 'Fatalities', 'Fatalities'))
OttawaCollisions$CollisionClass <- droplevels(OttawaCollisions$CollisionClass)
EDIT2: data.table 解决方案。
library('data.table')
setDT(OttawaCollisions)
OttawaCollisions[ i = CollisionClass %in% c( "fatal injury", "Non-fatal injury"),
j = CollisionClass := "Fatalities"]
OttawaCollisions[, CollisionClass := droplevels(CollisionClass) ]
EDIT3: 另一个基础 R 解决方案。我更喜欢这个基本的 R 解决方案,而不是第一个解决方案(在 factor() 中使用 labels),因为当您在数据中有更多级别时,它会让生活更轻松。
OttawaCollisions$CollisionClass <- as.character(OttawaCollisions$CollisionClass)
OttawaCollisions$CollisionClass <- factor( with(OttawaCollisions,
replace( CollisionClass,
CollisionClass %in% c( "fatal injury", "Non-fatal injury"),
"Fatalities") ) )