Re: [问题] 中英文分割成两变量

楼主: celestialgod (天)   2017-07-21 18:43:53
※ 引述《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"
作者: pp61022 (fight)   2017-07-22 10:04:00
谢谢您提供第二种方法!
作者: DoBahaha (Dobahaha)   2017-07-23 01:11:00
感谢收益良多

Links booklink

Contact Us: admin [ a t ] ucptt.com