※ 引述《pp61022 (fight)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 使用者(已經有用R 做過不少作品)
: [問題敘述]:
: 我有一個變數是字串,裡面同時包含中文英文,但沒有任何分隔符號。
: 例如:
: [1] "劍橋大學University of Cambridge"
: [2] "皇家理工學院(帝國理工學院)Imperial College London"
: [3] "加州大學洛杉磯分校University of California-Los Angeles"
: [4] "Melbourne University"
: ......
: ......
: 我想把這個變數拆成兩個變數
: "學校中譯", "學校英名"
: 如:
: [1] "劍橋大學", "University of Cambridge"
: [2] "皇家理工學院(帝國理工學院)", "Imperial College London"
: [3] "加州大學洛杉磯分校" , "University of California-Los Angeles"
: [4] NA, "Melbourne University"
: ...
: ...
: 這變數有一部分含中譯,一部分只有英文,
: 因為他中文字長度不一樣,沒辦法直接取個數分割,
: 不過有中譯結尾都是"學院", "大學", "分校"(但並非整個字串的結尾)
: 剛接觸文字清理,對全部函數還沒辦法通透運用,有搜尋一陣子但都無法達成想要的結果
: ,想請教版友有沒有好方法可以將中英文完整分割成兩個變項,謝謝版友。
: 或是沒辦法中英文分割,能否只留下英文,之後我再自己串中英文對照,謝謝版友。
: [程式範例]:
: [環境敘述]:
: 請提供 sessionInfo() 的輸出結果,
: 裡面含有所有你使用的作業系統、R 的版本和套件版本資訊,
: 讓版友更容易找出錯誤
: [關鍵字]:
:
我已經習慣用stringr了,所以如果你想要用R原生的就用strsplit跟gsub
library(stringr)
x <- c("劍橋大學University of Cambridge",
"皇家理工學院(帝國理工學院)Imperial College London",
"加州大學洛杉磯分校University of California-Los Angeles",
"Melbourne University")
str_split(str_replace_all(x, "([^A-Za-z ]*)([A-Za-z\\- ]+)", "\\1,\\2"), ",")
output:
[[1]]
[1] "劍橋大學" "University of Cambridge"
[[2]]
[1] "皇家理工學院(帝國理工學院)" "Imperial College London"
[[3]]
[1] "加州大學洛杉磯分校" "University of California-LosAngeles"
[[4]]
[1] "" "Melbourne University"