2016-01-14 28 views
0

我在數據框中有四列數據。這些列根據北/南/東/西拆分(NO記錄存在於多於一列中)來指定記錄(行)是否位於倫敦的4個不同部分內,因此(其中第一行是列標題) :使用R和tidyr從NAs中提取文本()

North South  East West 
NA  South  NA  NA 
NA  NA  East NA 
North NA  NA  NA 

我想用這些作爲一個圖表中的一個因素,因此,使用tidyr我串接他們

LondonNew <- unite(London,"adminarea",North:West,sep="",remove=FALSE) 

,所以,我現在有一個附加列名爲adminarea:

adminarea 
NASouthNANA 
NANAEastNA 
NorthNANANA 

我無法在tidyr()中找到一個理由來忽略NAs,並懷疑這是否可能?最壞的情況下,有人可以幫助我一個簡單的額外的正則表達式/ str_extract,這將幫助我只提取北,南,東或西四個單詞到一個單獨的列?

的目標是有:

adminarea 
South 
East 
North 

的幫助非常感謝。

+1

使用LondonNew $ adminarea < - gsub('NA','',LondonNew $ adminarea) – Gopala

+0

它可以在這種情況下工作,但並不總是如果文本的其他部分也有NA。 – Gopala

+1

這是一個矩陣索引的經典案例 - 'dat [cbind(seq_len(nrow(dat)),max.col(!is.na(dat)))]''將執行所有'unite'加'NA'的移除一氣呵成。 – thelatemail

回答

1

嘗試使用:

LondonNew$adminarea <- gsub('NA', '', LondonNew$adminarea) 

這會因爲你的字符串相結合的特殊工作性質。如果NA在該列中是有效的字符序列,則不會。