美好的一天,
我试图将数据从文本文件导入到R.正确格式化的数据没有问题,但是当分隔符是双/三空格时该怎么办?
例如,我有以下文本格式的数据
Var1 Var2 var3
30000 Sedan Model 2014
30000 CHEVROLET Corvette Stingray
....
在此处,而不是\ t(制表符)分隔,它是三个空格()分隔。列中的数据也可能包含单个空格。
如何让R直接接受?
我已尝试 read.table ,但分隔符标识符(sep ="")似乎不接受多个字符,并且不支持正则表达式。 (据我所知。)似乎有效的方法是将数据作为分隔符分区读取,并在数据帧中将其拆分,但这很愚蠢。
答案 0 :(得分:3)
您可以使用tidyr::separate
将数据拆分为三个空格。
df <- read.table(text = "Var1 Var2 var3
30000 Sedan Model 2014
30000 CHEVROLET Corvette Stingray", sep = "%", skip = 1)
tidyr::separate(df, V1, c("Var1", "Var2", "Var3"), sep = "\\s{3}", )
Var1 Var2 Var3
1 30000 Sedan Model 2014
2 30000 CHEVROLET Corvette Stingray
答案 1 :(得分:2)
确切的问题是您的列分隔符(2个或更多空格)和列值(单个空格)中的分隔符是重叠的。
要正确阅读,请将两者分开。
2个或更多空格的正则表达式为\s{2,}
。
使用此正则表达式使用,
将列分隔符转换为gsub
。
直接通过read.csv
>rawText="Var1 Var2 var3
30000 Sedan Model 2014
30000 CHEVROLET Corvette Stingray"
>cleanedText=gsub("\\s{2,}",",",rawText)
>df<-read.table(text=cleanedText)
> df
Var1 Var2 var3
1 30000 Sedan Model 2014
2 30000 CHEVROLET Corvette Stingray