2017-09-27 39 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"