[問題] 欄位分割、字串取代

作者: paranoia5201 (邁向研究生)   2019-07-03 13:23:34
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
【原始資料】
> cbind(head(tao$交易筆棟數))
[,1]
[1,] "土地1建物1車位2"
[2,] "土地1建物1車位1"
[3,] "土地1建物1車位0"
[4,] "土地1建物1車位1"
[5,] "土地1建物1車位1"
[6,] "土地1建物1車位0"
【預期目標】
土地數 建物數 車位數
1 1 2
1 1 1
1 1 0
1 1 1
1 1 1
1 1 0
[程式範例]:
以下是我成功做出的方法,想請教有無更聰明的方式。
##先將欄位中的文字逐一取代成'_'
tao$trade_n <- str_replace(tao$交易筆棟數, '土地', '_')
tao$trade_n <- str_replace(tao$trade_n, '建物', '_')
tao$trade_n <- str_replace(tao$trade_n, '車位', '_')
tao$trade_n <- paste0('0', tao$trade_n)
##看一下新創欄位的模樣
> head(tao$trade_n)
[1] "0_1_1_2" "0_1_1_1" "0_1_1_0" "0_1_1_1" "0_1_1_1" "0_1_1_0"
##開始逐欄分割
library(dplyr)
library(tidyr)
tao <- tao %>%
separate(trade_n, c('trade_n_NotUse', '土地數', "建物數", "車位數"), "_")
tao$土地數 <- as.numeric(tao$土地數)
tao$建物數 <- as.numeric(tao$建物數)
tao$車位數 <- as.numeric(tao$車位數)
##結果檢視
> head(cbind(tao$土地數, tao$建物數, tao$車位數))
[,1] [,2] [,3]
[1,] 1 1 2
[2,] 1 1 1
[3,] 1 1 0
[4,] 1 1 1
[5,] 1 1 1
[6,] 1 1 0
謝謝大家~
作者: andrew43 (討厭有好心推文後刪文者)   2019-07-03 13:49:00
可以用 strsplit() http://www.ideone.com/ZX5db8
作者: paranoia5201 (邁向研究生)   2019-07-03 14:54:00
神人!沒想到用三行就可KO、請受小弟一拜。
作者: celestialgod (天)   2019-07-03 17:07:00

Links booklink

Contact Us: admin [ a t ] ucptt.com