2017-07-30 17 views
1

有没有什么办法像SAS输入命令一样按R字节读取数据? 当一些多字节字符是在表中作为固定的列长度,有没有什么办法可以按R中的字节长度读取数据

AAA대전11B1
BB서울21B2
CCC부산갑B3

SAS可以通过字节长度如下读取它。

data test;
infile“filepath”;
输入
V1     $ 3。
V2     $ 6。
V3     $ 2。 ;
run;

AAA,대전11,B1
BB,서울21,B2
CCC,부산갑,B3


但在R,read.fwf只能单独数据的宽度不是字节长度。

所以,命令像下面

测试< - read.fwf( “文件路径”,宽度= C(3,6,2))

输出错误,或在像最佳形状这

AAA,대전11B1,NULL
BB,서울21B2,NULL
CCC,부산갑B3

所以,这是我的问题:有没有办法在R中按字节长度分隔数据列?

+0

结帐这[链接](https://stats.idre.ucla.edu/r/faq/how-can-i-read-binary-data-into-r/),看看是否readBin() '在这里稍微调整一下就可以帮到你。 – Prem

+0

这听起来像你不想读字节,但字符。前两行有13个字节,但第三行有14个字节。 – Tom

回答

0

下面的代码,你应该得到所需的输出(注:你可以有这个解决方案作为解决办法到时候你找到一个更好的方式来做到这一点)

file <- readLines("your_data_file.txt",encoding="UTF-8") 
newTxt <- unlist(strsplit(file, split = "\u2028")) 
newTxt <- lapply(newTxt, function(x) gsub("^([a-zA-Z]*)(.*)([a-zA-Z0-9]{2})$", "\\1,\\2,\\3", x)) 
df = do.call(rbind.data.frame, newTxt) 
names(df) <- "combined_column" 

library(tidyr) 
df %>% separate(combined_column, c("col1", "col2", "col3"), ",") 

输出:

col1 col2 col3 
1 aaa 대전11 b1 
2 bb 서울21 b2 
3 ccc 부산갑 b3 
+0

@resol如果你喜欢解决方案,那么你应该接受它作为正确的答案。如果将来遇到类似问题,它肯定会帮助其他人。谢谢! – Prem

相关问题