R 减少同一列中的系数级别
我需要减少因子变量“武器描述”的级别,它有80个级别,我希望它是8。我以前在希望结果是二进制的时候使用过grepl。现在我需要8个级别,我不知道如何继续。下面的例子是如果结果是二元的,我将如何处理。我需要帮助扩展到8种类型R 减少同一列中的系数级别,r,R,我需要减少因子变量“武器描述”的级别,它有80个级别,我希望它是8。我以前在希望结果是二进制的时候使用过grepl。现在我需要8个级别,我不知道如何继续。下面的例子是如果结果是二元的,我将如何处理。我需要帮助扩展到8种类型 crime_3yr$Weapon.Used<-ifelse(grepl(crime_3yr$Weapon.Description,pattern = "GUN|AXE|RIFLE"),"Melee","Ranged") 我希望是: hand gun"
crime_3yr$Weapon.Used<-ifelse(grepl(crime_3yr$Weapon.Description,pattern = "GUN|AXE|RIFLE"),"Melee","Ranged")
我希望是:
hand gun"
[3] "hand gun"
[4] "Assault rifle"
[5] "Assault rifle"
[6] "melee"
[7] "melee"
[8] "melee"
[9] "melee"
[10] "misc"
[11] "misc"
我意识到我还没有提供我想要的8个级别,因为我还没有决定最终的因素。我只需要知道如何将原始级别划分为两个以上的级别。
这80个级别是
[2] "AIR PISTOL/REVOLVER/RIFLE/BB GUN"
[3] "ANTIQUE FIREARM"
[4] "ASSAULT WEAPON/UZI/AK47/ETC"
[5] "AUTOMATIC WEAPON/SUB-MACHINE GUN"
[6] "AXE"
[7] "BELT FLAILING INSTRUMENT/CHAIN"
[8] "BLACKJACK"
[9] "BLUNT INSTRUMENT"
[10] "BOARD"
[11] "BOMB THREAT"
[12] "BOTTLE"
[13] "BOW AND ARROW"
[14] "BOWIE KNIFE"
[15] "BRASS KNUCKLES"
[16] "CAUSTIC CHEMICAL/POISON"
[17] "CLEAVER"
[18] "CLUB/BAT"
[19] "CONCRETE BLOCK/BRICK"
[20] "DEMAND NOTE"
[21] "DIRK/DAGGER"
[22] "DOG/ANIMAL (SIC ANIMAL ON)"
[23] "EXPLOXIVE DEVICE"
[24] "FIRE"
[25] "FIXED OBJECT"
[26] "FOLDING KNIFE"
[27] "GLASS"
[28] "HAMMER"
[29] "HAND GUN"
[30] "HECKLER & KOCH 91 SEMIAUTOMATIC ASSAULT RIFLE"
[31] "HECKLER & KOCH 93 SEMIAUTOMATIC ASSAULT RIFLE"
[32] "ICE PICK"
[33] "KITCHEN KNIFE"
[34] "KNIFE WITH BLADE 6INCHES OR LESS"
[35] "KNIFE WITH BLADE OVER 6 INCHES IN LENGTH"
[36] "LIQUOR/DRUGS"
[37] "M-14 SEMIAUTOMATIC ASSAULT RIFLE"
[38] "M1-1 SEMIAUTOMATIC ASSAULT RIFLE"
[39] "MAC-10 SEMIAUTOMATIC ASSAULT WEAPON"
[40] "MAC-11 SEMIAUTOMATIC ASSAULT WEAPON"
[41] "MACE/PEPPER SPRAY"
[42] "MACHETE"
[43] "MARTIAL ARTS WEAPONS"
[44] "OTHER CUTTING INSTRUMENT"
[45] "OTHER FIREARM"
[46] "OTHER KNIFE"
[47] "PHYSICAL PRESENCE"
[48] "PIPE/METAL PIPE"
[49] "RAZOR"
[50] "RAZOR BLADE"
[51] "RELIC FIREARM"
[52] "REVOLVER"
[53] "RIFLE"
[54] "ROCK/THROWN OBJECT"
[55] "ROPE/LIGATURE"
[56] "SAWED OFF RIFLE/SHOTGUN"
[57] "SCALDING LIQUID"
[58] "SCISSORS"
[59] "SCREWDRIVER"
[60] "SEMI-AUTOMATIC PISTOL"
[61] "SEMI-AUTOMATIC RIFLE"
[62] "SHOTGUN"
[63] "SIMULATED GUN"
[64] "STARTER PISTOL/REVOLVER"
[65] "STICK"
[66] "STRAIGHT RAZOR"
[67] "STRONG-ARM (HANDS, FIST, FEET OR BODILY FORCE)"
[68] "STUN GUN"
[69] "SWITCH BLADE"
[70] "SWORD"
[71] "SYRINGE"
[72] "TIRE IRON"
[73] "TOY GUN"
[74] "UNK TYPE SEMIAUTOMATIC ASSAULT RIFLE"
[75] "UNKNOWN FIREARM"
[76] "UNKNOWN TYPE CUTTING INSTRUMENT"
[77] "UNKNOWN WEAPON/OTHER WEAPON"
[78] "UZI SEMIAUTOMATIC ASSAULT RIFLE"
[79] "VEHICLE"
[80] "VERBAL THREAT"
library(dplyr)
示例%
变异(newValues=case_,当(
grepl(x=value,pattern=“刀|枪|弹”)~“武器”,
grepl(x=values,pattern=“fork | ball | paper |蜂蜜”)~“其他”,
grepl(x=value,pattern=“cat | dog | redfish”)~“pet”,
真~“未知”)
)
键值newValues
1 1刀武器
2 2枪武器
3 3炸弹武器
4.其他
5个球其他
6宠物狗
注:1。如果不想创建新列,只需重新指定相同的列即可;2.如果您需要一个系数,只需将
案例的结果导入系数即可
您的问题不清楚。将80个级别减少到8级的模式是什么?该模式类似于grepl函数。如果值包含单词“枪|臂|步枪”,它将被命名为“近战”,如果它包含单词“酸|喷雾|漂白剂”,它将被命名为“致命近战”,等等。我在您提供的数据中没有看到这些单词。请提供包含所有此类级别的样本向量。尝试添加尽可能多样的内容,以确保解决方案适用于每种情况。grepl
在dplyr::case\u中,何时
?@Pasqui您能提供一个示例吗?它不需要与我的数据相关。例如:如果第一组单词{apple,mango}与记录匹配,它将被分类为“1”,当第二组单词{tomato,onion}与记录匹配时,它将被分类为“2”,依此类推代码运行良好,但我似乎无法将值存储到新列。它只显示结果。是的。您需要将结果分配给新的数据帧:df2
[2] "AIR PISTOL/REVOLVER/RIFLE/BB GUN"
[3] "ANTIQUE FIREARM"
[4] "ASSAULT WEAPON/UZI/AK47/ETC"
[5] "AUTOMATIC WEAPON/SUB-MACHINE GUN"
[6] "AXE"
[7] "BELT FLAILING INSTRUMENT/CHAIN"
[8] "BLACKJACK"
[9] "BLUNT INSTRUMENT"
[10] "BOARD"
[11] "BOMB THREAT"
[12] "BOTTLE"
[13] "BOW AND ARROW"
[14] "BOWIE KNIFE"
[15] "BRASS KNUCKLES"
[16] "CAUSTIC CHEMICAL/POISON"
[17] "CLEAVER"
[18] "CLUB/BAT"
[19] "CONCRETE BLOCK/BRICK"
[20] "DEMAND NOTE"
[21] "DIRK/DAGGER"
[22] "DOG/ANIMAL (SIC ANIMAL ON)"
[23] "EXPLOXIVE DEVICE"
[24] "FIRE"
[25] "FIXED OBJECT"
[26] "FOLDING KNIFE"
[27] "GLASS"
[28] "HAMMER"
[29] "HAND GUN"
[30] "HECKLER & KOCH 91 SEMIAUTOMATIC ASSAULT RIFLE"
[31] "HECKLER & KOCH 93 SEMIAUTOMATIC ASSAULT RIFLE"
[32] "ICE PICK"
[33] "KITCHEN KNIFE"
[34] "KNIFE WITH BLADE 6INCHES OR LESS"
[35] "KNIFE WITH BLADE OVER 6 INCHES IN LENGTH"
[36] "LIQUOR/DRUGS"
[37] "M-14 SEMIAUTOMATIC ASSAULT RIFLE"
[38] "M1-1 SEMIAUTOMATIC ASSAULT RIFLE"
[39] "MAC-10 SEMIAUTOMATIC ASSAULT WEAPON"
[40] "MAC-11 SEMIAUTOMATIC ASSAULT WEAPON"
[41] "MACE/PEPPER SPRAY"
[42] "MACHETE"
[43] "MARTIAL ARTS WEAPONS"
[44] "OTHER CUTTING INSTRUMENT"
[45] "OTHER FIREARM"
[46] "OTHER KNIFE"
[47] "PHYSICAL PRESENCE"
[48] "PIPE/METAL PIPE"
[49] "RAZOR"
[50] "RAZOR BLADE"
[51] "RELIC FIREARM"
[52] "REVOLVER"
[53] "RIFLE"
[54] "ROCK/THROWN OBJECT"
[55] "ROPE/LIGATURE"
[56] "SAWED OFF RIFLE/SHOTGUN"
[57] "SCALDING LIQUID"
[58] "SCISSORS"
[59] "SCREWDRIVER"
[60] "SEMI-AUTOMATIC PISTOL"
[61] "SEMI-AUTOMATIC RIFLE"
[62] "SHOTGUN"
[63] "SIMULATED GUN"
[64] "STARTER PISTOL/REVOLVER"
[65] "STICK"
[66] "STRAIGHT RAZOR"
[67] "STRONG-ARM (HANDS, FIST, FEET OR BODILY FORCE)"
[68] "STUN GUN"
[69] "SWITCH BLADE"
[70] "SWORD"
[71] "SYRINGE"
[72] "TIRE IRON"
[73] "TOY GUN"
[74] "UNK TYPE SEMIAUTOMATIC ASSAULT RIFLE"
[75] "UNKNOWN FIREARM"
[76] "UNKNOWN TYPE CUTTING INSTRUMENT"
[77] "UNKNOWN WEAPON/OTHER WEAPON"
[78] "UZI SEMIAUTOMATIC ASSAULT RIFLE"
[79] "VEHICLE"
[80] "VERBAL THREAT"
example <- data.frame(key = c(1:10),
values = c("knife", "gun", "bomb", "fork",
"ball", "dog", "cat", "paper",
"redfish", "honey")
)
key values
1 1 knife
2 2 gun
3 3 bomb
4 4 fork
5 5 ball
6 6 dog
example %>%
mutate(newValues = case_when(
grepl(x = values, pattern = "knife|gun|bomb") ~ "weapon",
grepl(x = values, pattern = "fork|ball|paper|honey") ~ "other",
grepl(x = values, pattern = "cat|dog|redfish") ~ "pet",
TRUE ~ "Unkwown")
)
key values newValues
1 1 knife weapon
2 2 gun weapon
3 3 bomb weapon
4 4 fork other
5 5 ball other
6 6 dog pet