有没有办法像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中按字节长度分隔数据列?
答案 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"), ",")