我想要转换成数据框的字符检查器。
它大部分都很干净,但我无法弄清楚如何完成清洁工作。请注意,实际数据为Date
列为yyyy-mm-dd
,Variable
列为数字(在本例中为四位但不总是以逗号分隔)。
class(myvec)
[1] "character"
myvec
[1] " \"2016-01-01,8631n\" " " \"2016-01-02,8577n\" "
[3] " \"2016-01-03,8476n\" " " \"2016-01-04,8365n\" "
[5] " \"2016-01-05,8331n\" " " \"2016-01-06,8801n\" "
[7] " \"2016-01-07,5020n\""
空格和反斜杠" (' \"')应该删除。与n \"相同 预期的输出应该是这样的数据框
Date Variable
[1,] "2016-01-01" "8631"
[2,] "2016-01-02" "8577"
[3,] "2016-01-03" "8476"
[4,] "2016-01-04" "8365"
[5,] "2016-01-05" "8331"
[6,] "2016-01-06" "8801"
[7,] "2016-01-07" "5020"
一旦矢量是战队,我认为这可以胜任
do.call(rbind,strsplit(clean_vector,","))
我想我可以将lubridate
与var
转换为与我自己的as.numeric数字相关的数字,问题是如何使字符向量清晰且格式正确。
答案 0 :(得分:3)
您可以通过枚举它们来删除有问题的字符:
# example
x = " \"2016-01-01,8631n\" "
gsub("[n \"]","",x)
# "2016-01-01,8631"
这是有效的,因为[xyz]
标识列表xyz
中的任何单个字符。
或者您可以使用子字符串,因为格式是固定宽度的,在开头和结尾有不好的字符:
substr(x,3,17)
# "2016-01-01,8631"
如果字符串的var
部分的长度不同,nchar(x)-3
应该代替17
。