R語言字符串處理的一次經(jīng)歷

最近筆者在研讀一些文獻勉躺,發(fā)現(xiàn)了Remote Sensing of Environment上的一期Special Issues饵溅。這一期可以說是地學上Data Assimilation較為經(jīng)典的研究吧。所以也是目前研讀的重點妇萄。當然也是有些其他需求蜕企,現(xiàn)在想對這一期專刊的作者與客座編輯做些分析探討冠句。涉及到一些R語言的字符串處理方式轻掩。這里記錄下。

1 數(shù)據(jù)描述

數(shù)據(jù)就比較簡單了。一共兩個數(shù)據(jù)。第一個數(shù)據(jù)如下忠蝗。

image

主要包括Title和Author兩列膛堤,這個數(shù)據(jù)我命名為RSEDAPaper.xlsx文件奋构。

第二個數(shù)據(jù)如下壳影。

image

主要包括EditorBoard弥臼,這個數(shù)據(jù)我命名為EditorBoard.xlsx文件。

2 問題描述與思路

我其實想了解Remote Sensing of Environment這一期屟跷裕刊里鼠锈,Editor Board參與的文章數(shù)量有幾篇?所以這就涉及到兩個處理样傍,第一步是首先要對Author的字段進行分割成單獨的作者炕檩,第二步是與EditorBoard的數(shù)據(jù)做匹配捞蚂。

3 R語言實現(xiàn)

第一步首先要把用R語言將數(shù)據(jù)讀入到內(nèi)存里。由于我存的都是Excel文件,就需要用到openxlsx包扩然。之前我已經(jīng)介紹過如何在R里讀取Excel文件兵拢。詳情請見下文鏈接嘹履。

R語言讀取Excel的神器——openxlsx

library(openxlsx)
basepath <- "E:/RSEDA/"
RSEDA <- read.xlsx(paste(basepath, "RSEDAPaper.xlsx", sep = ""))
Editor <- read.xlsx(paste(basepath, "EditorBoard.xlsx", sep = ""))

basepath是你存放數(shù)據(jù)的路徑焰枢,根據(jù)具體情況來處理暑椰。

接下來就是涉及到第一步處理低滩,我們首先將Author這種一長串的數(shù)據(jù)進行分割婶溯。

image

其實這種論文的作者名是比較好分割的渔扎,直接使用","分割即可。使用的R語言函數(shù)是strsplit笤虫。輸入函數(shù)最主要包括兩個,一個是字符串,一個是分割符號。樣例如下:

a <- RSEDA$Author[2]
a
a <- unlist(strsplit(a, split = ","))
a

兩次輸出分別為:

image
image

可以發(fā)現(xiàn)已經(jīng)成功做了分割转捕,使得變成了7個作者單獨的一個向量与柑,當然如果你的字符串連接方式不是","脯倚,你只需要在split的等號后面進行修改。而作者個數(shù)不相同的情況下淤堵,這樣子如何存儲呢?這時候就用到了R里的一個特殊存儲結(jié)構(gòu):列表。列表很適合存儲這種長度不一的一些數(shù)據(jù)贵扰。

authorlist <- list()
for (i in 1:nrow(RSEDA)) {
  authors <- RSEDA$Author[i]
  authors <- unlist(strsplit(authors, split = ","))
  authorlist[[i]] <- authors
}
authorlist
image

可以發(fā)現(xiàn)很好的存儲起來了谷誓,當然還有個小問題糙臼。由于英文的一些空格的原因,導致有些作者前后多了空格痕届。所以做下一步匹配之前需要對這個進行處理渊啰,這里用的是stringr包绘证。

library(stringr)
b <- " John M. Morrison "
str_trim(b, "both")
image
image

效果如圖,side = "both"蚌斩,指去除掉兩邊的空格员魏,"left"和"right"則是去除左邊或右邊的空格闷袒。接下來只需要篩選數(shù)據(jù)做匹配也物。這里先生成一個跟前面authorlist一樣結(jié)構(gòu)的editorlist列表。然后針對每一篇文章作者分析列疗,用一個for循環(huán)和luse獲取作者個數(shù)滑蚯,然后,再嵌套一個for循環(huán)抵栈,獲取這一篇文章里每個作者名字告材,接著去除空格,然后是匹配古劲,ifelse語句的含義是表示斥赋,如果這個作者名字有出現(xiàn)在Editor Board里,就輸出1产艾,如果沒有輸出0灿渴。

editorlist <- list()
editorlist <- authorlist
for (i in 1:nrow(RSEDA)) {
  luse <- length(authorlist[[i]])
  for (m in 1:luse) {
    deauthor <- authorlist[[i]][m]
    deauthor <- str_trim(deauthor, 'both')
    editorlist[[i]][m] <- ifelse(deauthor%in%Editor$EditorBoard, 1, 0)
  }
}
image

輸出結(jié)果如圖。接著對每一篇文章統(tǒng)計胰舆,是否有Editor Board骚露,有的話是1,沒有的話是0缚窿。

RSEDA$editor <- 1
for (i in 1:nrow(RSEDA)) {
  RSEDA$editor[i] <- ifelse("1"%in%editorlist[[i]], 1, 0) 
}

先生成了一個字段editor表示是否有Editor Board棘幸,默認值為1。而接著就是對每一行分析倦零,這里每一行误续,是否有含"1"吨悍,有的話,即為有Editor Board蹋嵌。

事實上分析結(jié)果顯示育瓜,這一期專刊里居然一個Editor Board也沒有參與文章發(fā)表栽烂。也是蠻奇怪的躏仇。后期可能會針對這些文獻做些介紹。這一期的R語言處理的步驟也可以用到其他部分腺办,其實主要是字符串分割焰手,去除空格以及簡單的包含處理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怀喉,一起剝皮案震驚了整個濱河市书妻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躬拢,老刑警劉巖躲履,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異聊闯,居然都是意外死亡工猜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門馅袁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來域慷,“玉大人,你說我怎么就攤上這事汗销∮贪” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵弛针,是天一觀的道長叠骑。 經(jīng)常有香客問我,道長削茁,這世上最難降的妖魔是什么宙枷? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮茧跋,結(jié)果婚禮上慰丛,老公的妹妹穿的比我還像新娘。我一直安慰自己瘾杭,他們只是感情好诅病,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般贤笆。 火紅的嫁衣襯著肌膚如雪蝇棉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天芥永,我揣著相機與錄音篡殷,去河邊找鬼。 笑死埋涧,一個胖子當著我的面吹牛板辽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播飞袋,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼戳气,長吁一口氣:“原來是場噩夢啊……” “哼链患!你這毒婦竟也來了巧鸭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤麻捻,失蹤者是張志新(化名)和其女友劉穎纲仍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贸毕,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡郑叠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了明棍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乡革。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖摊腋,靈堂內(nèi)的尸體忽然破棺而出沸版,到底是詐尸還是另有隱情,我是刑警寧澤兴蒸,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布视粮,位于F島的核電站,受9級特大地震影響橙凳,放射性物質(zhì)發(fā)生泄漏蕾殴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一岛啸、第九天 我趴在偏房一處隱蔽的房頂上張望钓觉。 院中可真熱鬧,春花似錦坚踩、人聲如沸荡灾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卧晓。三九已至芬首,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逼裆,已是汗流浹背郁稍。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胜宇,地道東北人耀怜。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像桐愉,于是被迫代替她去往敵國和親财破。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1从诲、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評論 3 119
  • 前言 最先接觸編程的知識是在大學里面系洛,大學里面學了一些基礎(chǔ)的知識俊性,c語言,java語言描扯,單片機的匯編語言等定页;大學畢...
    oceanfive閱讀 3,048評論 0 7
  • 今天上班的時候看到廠區(qū)內(nèi)一大群羊在悠閑地散步,起初我一度以為是我眼花了绽诚,甚至認為門衛(wèi)師傅們又買了好幾只田園犬典徊,可是...
    夏野閱讀 155評論 1 0