R語言資料處理(二)字元分隔
現有match表,
v1 v2
1 001;02
2 03,004;001
3 003;002,001
我想把match表中V2這一列的資料分隔開,形成表match_new:
V1 V2 V3 V4
1 001 02
2 03 004 001
3 003 002 001
需要注意的是原match表中v2這一列裡的資料有的以“;”分隔,有的以“,”分隔。
程式碼一
a <- data.frame(v1 = 1:3, V2 = c('001;02', '03,004;001', '003;002,001'), V3 = NA, V4 = NA, stringsAsFactors = F )
for(i in 1:nrow(a)){
l <- strsplit(a[i, 2], ',')
l <- strsplit(l[[1]], ';')
s <- l[[1]]
if(length(l)>1)
for(n in 2:length(l)){
s <- c(s, l[[n]])
}
a[i,2:(1+length(s))] <- s
}
程式碼二
> match<-data.frame(V1=c(1,2,3),v2=c('001;002','003,004;001','003;002,001'))
> match
V1 v2
1 1 001;002
2 2 003,004;001
3 3 003;002,001
>
> parts<-function(x) {
+ m <- regexec("([0-9]+)(;|,)*([0-9]*)(;|,)*([0-9]*)", x)
+ parts <- unlist(lapply(regmatches(x, m), `[`, c(2L, 4L, 6L)))
+ parts
+ }
>
> rr<-do.call(rbind,lapply(as.character(match$v2),parts))
> colnames(rr)<-c("V2","V3","V4")
> cbind(V1=match$V1,rr)
V1 V2 V3 V4
[1,] "1" "001" "002" ""
[2,] "2" "003" "004" "001"
[3,] "3" "003" "002" "001"
相關文章
- R語言資料處理(一)R語言
- r語言資料處理(三)R語言
- R語言歸一化處理R語言
- R缺失資料處理
- 資料處理的 9 大程式語言
- R語言批量建立資料框R語言
- 資料分析與R語言01R語言
- R語言資料質量分析R語言
- Python資料處理(二):處理 Excel 資料PythonExcel
- 自然語言處理背後的資料科學自然語言處理資料科學
- 9個最佳的大資料處理程式語言大資料
- R語言連線資料庫(MySQL)R語言資料庫MySql
- R語言入門與資料分析R語言
- 語言處理器
- Python自然語言處理 1 語言處理與PythonPython自然語言處理
- 第二篇:R語言資料視覺化之資料塑形技術R語言視覺化
- R語言學習-高階資料管理R語言
- R語言:資料輸出至檔案R語言
- 含有特殊字元的資料檔案處理字元
- Perl語言的文書處理模式之二(轉)模式
- 自然語言處理(NLP)自然語言處理
- 用R處理不平衡的資料
- 【R語言入門】R語言中的變數與基本資料型別R語言變數資料型別
- R語言實戰第二版R語言
- C語言程式設計練習 GPS資料處理C語言程式設計
- r語言R語言
- R語言實戰(1) 資料集的建立R語言
- R語言批量提取excel當中的資料R語言Excel
- 《R語言入門與資料分析》——向量索引R語言索引
- Java語言中字元的處理 (轉)Java字元
- Python自然語言處理 2 獲得文字語料和詞彙資源Python自然語言處理
- 【R語言入門】R語言環境搭建R語言
- 資料庫學習(二)資料操作語言:資料庫
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理NLP(四)自然語言處理
- Python自然語言處理Python自然語言處理
- Go 語言異常處理Go
- 專業貼:100+個自然語言處理資料集自然語言處理