2017-09-27 40 views
0

我有一個數據集如下刪除字符,從數據集

[1] "21/12/16, 14:25:10: abcd      
[2] "21/12/16, 14:25:14: 1234    
[3] "21/12/16, 14:25:22: XXX   
[4] "21/12/16, 14:25:30: YYY   
[5] "21/12/16, 14:25:47: ZZZ 

日期變量具有上述數據集中爲所有的日期,

> head(date) [1] "21/12/16" "21/12/16" "21/12/16" "21/12/16" "21/12/16"

時間變量從所有時間dataset as,

> head(time) [1] "14:25" "14:25" "14:25" "14:25" "14:25"

現在我想將數據集修改爲:

[1] abcd      
[2] 1234    
[3] XXX   
[4] YYY   
[5] ZZZ 

我們該怎麼做?我試過gsub但沒用。有人能幫助我嗎?

+0

這個修改意味着什麼?這是從哪裏來的?你只想要最後一欄嗎?您開始發佈的數據集是什麼?它是一個data.frame? –

+0

@ KenS。這不是數據框。這是一個角色。一個完整的文本文件已被讀入R. –

回答

2

對於預期的行爲,您並不完全精確,但對於您提供的數據集,在「:」上分割並獲得所需結果的第四個元素。但是,您應該考慮用例,以及是否可以依賴於一般的工作。例如你想要的字符串之前總會有三個冒號嗎?你想要的字符串不會包含冒號嗎?等等。

此外,我認爲你錯過了行中的結束引號。

1
readLines(con = textConnection("21/12/16, 14:25:10: abcd 
21/12/16, 14:25:14: 1234 
21/12/16, 14:25:22: XXX 
21/12/16, 14:25:30: YYY 
21/12/16, 14:25:47: ZZZ")) -> text_file_lines 

text_file_lines 
## [1] "21/12/16, 14:25:10: abcd" "21/12/16, 14:25:14: 1234" 
## [3] "21/12/16, 14:25:22: XXX" "21/12/16, 14:25:30: YYY" 
## [5] "21/12/16, 14:25:47: ZZZ" 

# built-in 
# somewhat forgiving regex replace 
sub("^[[:digit:]]+/[[:digit:]]+/[[:digit:]]+,[[:space:]]+[[:digit:]]+:[[:digit:]]+:[[:digit:]]+:[[:space:]]", "", text_file_lines) 
## [1] "abcd" "1234" "XXX" "YYY" "ZZZ" 

# external pkg 
# this matches from last : onward and extracts the bits you want 
stringi::stri_match_last_regex(text_file_lines, ": ([[:print:]]+)$")[,2] 
## [1] "abcd" "1234" "XXX" "YYY" "ZZZ"