2017-07-30 18 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

相關問題