Перемещение данных из одного столбца в другой без переопределения всех данных R - PullRequest
0 голосов
/ 25 июня 2018

У меня большой фрейм данных, который содержит информацию об адресе (CUST_ADDRESS_1 и CUST_ADDRESS_2).

CUST_ADDRESS_1 должен содержать только информацию об улицах, например 123 Anywhere Drive, тогда как CUST_ADDRESS_2 должен содержать только информацию о Suite, например Suite 23.

Я хочу найти все случаи, когда информация Suite находится в CUST_ADDRESS_1, и поместить ее в CUST_ADDRESS_2.

Я в порядке, если информация Suite заменяет текущие данные в CUST_ADDRESS_2, но я хочу, чтобы данные заменялись только в том случае, если они удовлетворяют этому условию.

Например:

до

CUST_ADDRESS_1                     CUST_ADDRESS_2
986 Eastern Drive                  Suite 180
763 Sunset Drive, Suite 2          Attn: Mark Matthews
543 Roanoke Lane
4201 Practice Road, Suite 18

ПОСЛЕ

CUST_ADDRESS_1                     CUST_ADDRESS_2
986 Eastern Drive                  Suite 180
763 Sunset Drive                   Suite 2
543 Roanoke Lane
4201 Practice Road,                Suite 18

Если попытаться выполнить следующее, но если информация Suite не найдена в CUST_ADDRESS_1, она удалит данные в CUST_ADDRESS_2.

RosterFinal$CUST_ADDRESS_2 <- if_else(grepl("SUITE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr("SUITE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" STE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" STE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" #",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" #", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),"")))

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Звучит как стандарт R, какая проблема.Приведенный ниже код определенно не является оптимальным, но он должен дать вам представление о том, как решать такие проблемы.

Попробуйте следующее

RosterFinal[which(grep(", Suite ",RosterFinal$CUST_ADDRESS_1)==1),'CUST_ADDRESS_2'] <- "Suite "+strsplit(RosterFinal$CUST_ADDRESS_1,"Suite ")[[1]][2]
RosterFinal$CUST_ADDRESS_1 <- strsplit(RosterFinal$CUST_ADDRESS_1,", Suite")[[1]][1]
0 голосов
/ 25 июня 2018
RosterFinal$CUST_ADDRESS_3 <- if_else(grepl("SUITE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr("SUITE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" STE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" STE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" #",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" #", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),"")))

RosterFinal=RosterFinal[,-"CUST_ADDRESS_2"]

colnames(RosterFinal)[colnames(RosterFinal)=="CUST_ADDRESS_3"]="CUST_ADDRESS_2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...