2016-07-27 4 views
1

同じ方法でフォーマットされた一連のtxtファイルがあります。 最初の数行はすべてファイル情報に関するものです。変数名はありません。あなたが見ることができるように、要素間のスペースは矛盾していますが、列は左揃えまたは右揃えです。SA​​Sがこの形式でデータを直接読み取ることができ、Rに類似の機能があれば不思議です。左揃えのデータではあるが、一貫性のない空白数があるtxtファイルを読み込む

これらのデータを読み込むためにread.csv関数を試してみましたが、関数内のsep = "\ s"(複数のスペース)が認識できない場合、3列のdata.frameに保存します。正規表現。

私はこれらのデータを変数で最初に読み込み、substr関数を使って次のように分割しようとしました。 STEP1

Factor<-data.frame(substr(Share$V1,1,9),substr(Share$V1,9,14),as.numeric(substr(Share$V1,15,30))) 

STEP2

しかし、これは非常にインテリジェントでないで、との間のスペースをカウントする必要があります。 データを3つの列として直接ロードする方法があれば、私はさまよいます。

> Factor 
    F T  S 
1 +B2P  A  1005757219 
2 +BETA  A  826083789 

答えて

0

私たちは、別のオプションは、ファイルから直接それを読んskipピングヘッダ行や列名を変更することであろう3列

read.table(text=as.character(Share$V1), sep="", header=FALSE, 
       stringsAsFactors=FALSE, col.names = c("FactorName", "Type", "Share")) 
# FactorName Type  Share 
#1  +B2P A 1005757219 
#2  +BETA A 826083789 
#3  +E2P A 499237181 
#4  +EF2P A 38647147 
#5  +EFCHG A 866171133 
#6 +IL1QNS A 945726018 
#7 +INDMOM A 862690708 

としてそれを読むためにread.tableを使用することができます

read.table("yourfile.txt", header=FALSE, skip=1, stringsAsFactors=FALSE, 
       col.names = c("FactorName", "Type", "Share")) 
+1

私はどこで間違ってコーディングしたのか分かります。デフォルトの引数sep = ""(スペースなし)は1つ以上のスペースを参照しますが、完全に一致して正しく分割されるsep = ""(1つのスペース)をタイプしました。この機能のread.csvもこの問題のために機能します。 – Mengqiu

関連する問題