Оптимизировать несколько, если еще в R - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в R и пытаюсь выяснить, есть ли способ упростить следующий код

    assault<-"13"
drugs<-"35"
homicide<-"09"
kidnapping<-"10"
sex_offense<-"36"
sex_assault<-"11"
theft<-c("12","22","23","24","28")
crime_data$OffenseType<-ifelse((substr(crime_data$NCIC.CODE,1,2) %in% assault)==TRUE,"Assault",
                               ifelse((substr(crime_data$NCIC.CODE,1,2) %in% drugs)==TRUE,"Drugs",
                                      ifelse((substr(crime_data$NCIC.CODE,1,2) %in% homicide)==TRUE,"Homicide",
                                             ifelse((substr(crime_data$NCIC.CODE,1,2) %in% kidnapping)==TRUE,"Kidnapping",
                                                    ifelse((substr(crime_data$NCIC.CODE,1,2) %in% sex_offense)==TRUE,"Sexual Offense",
                                                           ifelse((substr(crime_data$NCIC.CODE,1,2) %in% sex_assault)==TRUE,"Sexual Assault",
                                                                  ifelse((substr(crime_data$NCIC.CODE,1,2) %in% theft)==TRUE,"Theft","Others")))))))

1 Ответ

0 голосов
/ 03 декабря 2018

Я не уверен, как была создана переменная NCIC.CODE, поскольку ее нет в исходном наборе данных, но подход dplyr::mutate и dplyr::case_when, как было упомянуто, будет иметь следующий вид:

library(magrittr)
library(dplyr)
library(readr)

assault<-"13"
drugs<-"35"
homicide<-"09"
kidnapping<-"10"
sex_offense<-"36"
sex_assault<-"11"
theft<-c("12","22","23","24","28")

crime_data <- read_csv(file=file.choose())
crime_data %<>%
  mutate(NCIC.CODE = substr(NCIC.CODE,1,2))
  mutate(OffenseType = case_when(NCIC.CODE %in% assault ~ "Assault",
                             NCIC.CODE %in% homicide ~ "Homicide",
                             NCIC.CODE %in% kidnapping ~ "Kidnapping",
                             NCIC.CODE %in% sex_offense ~ "Sexual Offense",
                             NCIC.CODE %in% sex_assault ~ "Drugs",
                             NCIC.CODE %in% theft ~ "Sexual Assault",
                             NCIC.CODE %in% drugs ~ "Theft",
                             TRUE ~ "Others"
                             ))

Если вы сообщите нам, как был создан NCIC.CODE, мы сможем помочь вам больше.

Если вы используете dput(head(crime_data, 10)) и публикуете результаты, он покажет некоторые данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...