有没有办法按R中的字节长度读取数据

时间:2017-07-30 06:39:18

标签: r sas byte read.fwf

有没有办法像R输入命令那样按字节长度读取数据? 当某些多字节字符在表中作为固定列长度时,

AAA대전11B1
bb서울21b2
CCC부산갑B3

SAS可以按字节长度读取,如下所示。

数据测试;
infile“filepath”;
输入
V1 $ 3 V2 $ 6. V3 $ 2。 ;
运行;

aaa,대전11,b1
bb,서울21,b2
ccc,부산갑,b3


但是在R中,read.fwf只能按宽度分隔数据而不是字节长度。

所以,如下命令

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

输出错误,或者最好是这样的形状

aaa,대전11b1,NULL
bb,서울21b2,NULL
ccc,부산갑b3

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

1 个答案:

答案 0 :(得分:0)

使用以下代码,您应该获得所需的输出(注意:您可以将此解决方案作为解决方法,直到您找到更好的方法进行操作!)

from collections import namedtuple
Employee = namedtuple("Employee",("name", "age", "salary"))

输出:

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"), ",")