Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 减少同一列中的系数级别_R - Fatal编程技术网

R 减少同一列中的系数级别

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"

我需要减少因子变量“武器描述”的级别,它有80个级别,我希望它是8。我以前在希望结果是二进制的时候使用过grepl。现在我需要8个级别,我不知道如何继续。下面的例子是如果结果是二元的,我将如何处理。我需要帮助扩展到8种类型

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