[问题类型]:
程式咨询(我想用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
谢谢大家~