2017-04-08 75 views
0

我想感謝所有給予我有用的編碼建議的人。 我有一排約700個細胞。 每個單元都有一個「ID號,月份,年份和狀態」。 我想編寫程序以刪除每個單元格中的月份和年份,但保留ID或狀態。刪除單元格中的日期

一件好事就是每個值之間都有一個空格。 我正在考慮讓代碼識別空白區域? 所以也許就像 「嘿R你可以刪除第二和第四個白色空間之間的翻轉?」

「4475 10 2013傳染」 變成 「4475傳染」

Partial Code

謝謝,任何提示或建議(甚至包)的幫助。我也想知道這一點 - 我會更新我的代碼,因爲我找出更多步驟

+2

不要將您的數據或代碼作爲圖像發佈,請學習如何給出[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610) – Jaap

回答

3

R有listsvectors允許建立索引。在R.工作scan功能可用於在空白拆分字符值時,你應該從你的詞彙量下降的術語「細胞」:

scan(text=" 4475 10 2013 infected ", what="")[c(1,4)] # Pick first and fourth. 
#Read 4 items 
#[1] "4475"  "infected" 

如果你希望他們回答道,該paste功能可用。 scan函數是read.table-函數的核心,這將是我將用於鏈接中數據的數據。如果您要編輯您的問題以包含dput(head(dataset)),您可能會得到一個解決您實際問題的答案,但目前您在實際代碼中提供的唯一問題已得到解決。 (數據集的照片不會在SO warmlywelcomed瞭解張貼在問題文本實際漢字例如發佈的輸出:。dput(head(dataset))

這說明了如何提取使用scan多行數據輸入第1和第4項:。

scan(text=txt, what=list(1, NULL, NULL, "")) # list of type-"examples" 
#----------- 
Read 3 records 
[[1]] 
[1] 4475 6685 3547 

[[2]] 
NULL 

[[3]] 
NULL 

[[4]] 
[1] "infected" "infected" "susceptible" 
0

另一種選擇使用sapplystrsplit我們分裂基礎上的空間,並且拋出了第三/第四的位置(這是那些來第二和第四空間之間),然後我們重組:

txt <- c(" 4475 10 2013 infected ", 
      " 6685 10 2013 infected ", 
      " 3547 10 2013 susceptible") 

sapply(strsplit(txt," "), function(x) paste0(unlist(x)[-3:-4], collapse=" ")) 
##[1] " 4475 infected" " 6685 infected" " 3547 susceptible"