2017-07-30 11 views
1

SAS入力コマンドのようにRでバイト長でデータを読み取る方法はありますか? いくつかのマルチバイト文字は、固定列の長さとしてテーブルにある、バイト長でデータを読み取る方法はありますか?

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

SASは、以下のようにバイトの長さでそれを読むことができ

データテスト;
infile "filepath";
入力
V1     $ 3
V2     $ 6。
V3     $ 2。 ;
実行;

read.fwfのみ区切ることができ、AAA、대전11、B1
BB、서울21、B2
CCC、부산갑、B3


しかしRにおいて、バイト長ではなく幅によるデータしたがって

試験<以下のようなコマンド - read.fwf( "ファイルパス"、幅= Cの(3,6,2))

出力誤差、または最高の形でのようこの

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

これは私の質問です:データ列をRのバイト長で区切る方法はありますか?あなたが目的の出力を取得する必要コードの下で

+0

この[link](https://stats.idre.ucla.edu/r/faq/how-can-i-read-binary-data-into-r/)をチェックアウトし、 'readBin() 'ちょっとした微調整でここを助けてくれます。 – Prem

+0

あなたはバイトを読むのではなく、文字を読みたいと思うようです。最初の2行は13バイトですが、3行目は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

関連する問題