Разбиение столбца в R с условием ifelse - PullRequest
0 голосов
/ 27 марта 2020

У меня есть столбец с именем Rooms, в котором содержатся следующие данные:

'4+1' '3+1' '3' '2' '3+2' '4' '1' '2+1' '2+2' '5+1' '1+1' '6+1' '7+1' '5' '6' '0' '4+2' '8'

Я хотел разделить его на два столбца, в которых разделитель равен +, и я сделал это, выполнив следующие действия:

splitingRoomsDF <- data.frame(do.call('rbind', strsplit(as.character(out$Rooms),'+',fixed=TRUE)),stringsAsFactors = FALSE)

Затем, чтобы объединить этот кадр данных с основными данными, я сделал:

data_final = cbind(out,splitingRoomsDF)

и когда я распечатал его, я получил это: enter image description here

Проблема с вышеприведенным выводом состоит в том, что если у нас есть значение ячейки в Rooms, у которого нет разделителя +, оно заменяет X1 и X2 на это значение, и я хотите, чтобы значение X2 было равно нулю, если Rooms без + разделителя. Я не уверен, что использование if-else - это то, что нужно делать здесь, но пока что с этим.

Итак, что я должен изменить в моих строках кода выше, чтобы точно сделать это изменение.

Я использую этот набор данных: https://www.kaggle.com/dragonduck/property-listings-in-kuala-lumpur

1 Ответ

1 голос
/ 27 марта 2020

Вы можете использовать tidyr::separate который. обрабатывает это чисто:

splitingRoomsDF <- tidyr::separate(out, Rooms, into = c('Room1', 'Room2'), 
                sep = "\\+",remove = FALSE, convert = TRUE, fill = "right")

head(splitingRoomsDF[, 1:5])

#                           Location        Price Rooms Room1 Room2
#1                KLCC, Kuala Lumpur RM 1,250,000   2+1     2     1
#2   Damansara Heights, Kuala Lumpur RM 6,800,000     6     6    NA
#3             Dutamas, Kuala Lumpur RM 1,030,000     3     3    NA
#4              Cheras, Kuala Lumpur                       NA    NA
#5         Bukit Jalil, Kuala Lumpur   RM 900,000   4+1     4     1
#6 Taman Tun Dr Ismail, Kuala Lumpur RM 5,350,000   4+2     4     2

Если вы хотите установить NA в 0, вы можете сделать

splitingRoomsDF[4:5][is.na(splitingRoomsDF[4:5])] <- 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...