2

次のテキスト ファイルをインポートしようとしています。

   "year"   "sex"   "name"       "n"    "prop"
"1" 1880    "F"     "Mary"      7065    0.0723835869064085
"2" 1880    "F"     "Anna"      2604    0.0266789611187951
"3" 1880    "F"     "Emma"      2003    0.0205214896777829
"4" 1880    "F"     "Elizabeth" 1939    0.0198657855642641
"5" 1880    "F"     "Minnie"    1746    0.0178884278469341
"6" 1880    "F"     "Margaret"  1578    0.0161672045489473
"7" 1880    "F"     "Ida"       1472    0.0150811946109318
"8" 1880    "F"     "Alice"     1414    0.0144869627580554
"9" 1880    "F"     "Bertha"    1320    0.0135238973413247
"10"1880    "F"     "Sarah"     1288    0.0131960452845653

そして、私は使用に問題はありません:

data <-read.table("~/Documents/baby_names.txt",header=TRUE,se="\t")

ただし、readrでそれを行う方法がわかりませんでした。次のコマンドは失敗します。

data2 <-read_tsv("~/Documents/baby_names.txt")

この問題は、最初の行に 5 つの要素 (見出し) と残りの 6 つが含まれているという事実に関連していることはわかっていますが、「1」、「2」、「3」などを無視するように readr に指示する方法がわかりません。の上。助言がありますか?

4

2 に答える 2

0

本文と列名を別々に読み取ってから、それらを組み合わせることができます。

require(readr)

df <- read_tsv("baby_names.txt", col_names = F, skip = 1)

col_names <- read.table("baby_names.txt", header = F, sep = "\t", nrows = 1)

df$X1 <- NULL
names(df) <- col_names

結果:

> head(df)
     1     1         1    1          1
1 1880 FALSE      Mary 7065 0.07238359
2 1880 FALSE      Anna 2604 0.02667896
3 1880 FALSE      Emma 2003 0.02052149
4 1880 FALSE Elizabeth 1939 0.01986579
5 1880 FALSE    Minnie 1746 0.01788843
6 1880 FALSE  Margaret 1578 0.01616720

のように row_names を設定する簡単な方法はないと思いますがread_tsv()read.table()これで十分な回避策になるはずです。

于 2016-06-14T07:51:05.337 に答える