我正在研究犯罪数据的样本,我试图合并类似的犯罪类型,因为在名为“ Primary.Type”的列中类型太多。
dd$Primary.Type.new <- ifelse(dd$Primary.Type.new %in% c("SEX OFFENSE", "PROSTITUTION", "OBSCENITY", " CRIM SEXUAL ASSAULT"),"SEX_CRIME",dd$Primary.Type.new)
dd$Primary.Type.new <- ifelse(dd$Primary.Type.new %in% c("DECEPTIVE PRACTICE"),
"DECEPTIVE PRACTICE",dd$Primary.Type.new)
然后变成数字:
有人可以告诉我该怎么做,我已经尝试了数千次.....非常感谢您!
答案 0 :(得分:0)
之所以发生这种情况,是因为您的变量是一个因素。让我们看一个更简单的示例:
x = sample(letters, 1000, replace=TRUE)
df = data.frame(x=x)
table(df$x)
a b c d e f g h i j k l m n o p q r s t u v
47 45 45 34 37 37 38 43 33 34 38 35 30 41 41 43 32 39 41 47 37 44
w x y z
30 37 35 37
这如我们所料。但是,如果我们尝试使用ifelse
添加新值怎么办?
df$x = ifelse(df$x %in% letters[1:13], toupper(df$x), df$x)
table(df$x)
14 15 16 17 18 19 20 21 22 23 24 25 26 A B C D E F G H I
41 41 43 32 39 41 47 37 44 30 37 35 37 47 45 45 34 37 37 38 43 33
J K L M
34 38 35 30
我们自己编码的toupper(df$x)
的值是字符串格式,但是其他返回的值都是数字,这是我们不想要的。
要解决此问题,请在您读取数据的代码中添加stringsAsFactors=FALSE
。
df = data.frame(x=x, stringsAsFactors=FALSE)
table(df$x)
a b c d e f g h i j k l m n o p q r s t u v
47 45 45 34 37 37 38 43 33 34 38 35 30 41 41 43 32 39 41 47 37 44
w x y z
30 37 35 37
df$x = ifelse(df$x %in% letters[1:13], toupper(df$x), df$x)
table(df$x)
A B C D E F G H I J K L M n o p q r s t u v
47 45 45 34 37 37 38 43 33 34 38 35 30 41 41 43 32 39 41 47 37 44
w x y z
30 37 35 37