Как я могу использовать ifelse () для объединения переменных в R? Я пробовал много раз - PullRequest
0 голосов
/ 30 октября 2018

Я работаю над выборкой данных о преступлениях, я пытался объединить похожие типы преступлений, поскольку в столбце с именем "Primary.Type" слишком много типов.

enter image description here

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)

Потом перешли к цифрам:

enter image description here

Может кто-нибудь сказать мне, что делать, я пробовал тысячи раз ..... Большое спасибо!

1 Ответ

0 голосов
/ 30 октября 2018

Это происходит потому, что ваша переменная является фактором. Давайте посмотрим на более простой пример:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...