2014-02-06 3 views
2
I는 다음과 같다 데이터를 시뮬레이션 한

:오류 때 헤더 = TRUE

LastName Date  email             CreditCardNum AgeZip Amount 
Paul  21/02/14 [email protected]      4241033422900360 6738851$14.39 
Bullock  2/7/[email protected]      5178789953524240 3336538$498.31 
Mcmahon  11/5/[email protected]        5389589582467450 7734302$92.44 
Walters 25/09/13 [email protected]      5157094536097720 7794007$206.60 
Franco  17/06/13 [email protected]         345477952996264 2415873$89.12 

을하고이 어떻게 헤더, R로 가져하려고 해요입니다 :

w <- c(11,10,57,16,3,5,8) 
df <- read.fwf("data.txt",widths=w,stringsAsFactors=F) 
names(df) <- df[1,]; df <- df[-1,] 
단지 사실이 아니다

Error in read.table(file = FILE, header = header, sep = sep, row.names = row.names, : more columns than column names 

: 나는 header=T를 사용하지 않는

이유는 나에게 오류를 제공한다는 것입니다. 너비 (w)가 정확한지 알고 있습니다. 그렇다면이 오류는 어디에서 오는 것입니까? 내 솔루션은 잘 작동하며, 무슨 일이 일어나고 있는지 이해하고 싶습니다.

+0

당신이 당신의'w' 벡터를 제공시겠습니까? – jbaums

+1

예, 미안합니다 :'w <- c (11,10,57,16,3,5,8)'. 편집 됨. – shadowtalker

+0

나는 당신의 질문이 무엇인지 조금 불분명하다. 오류가 왜 던져 졌는지 알고 싶습니까? 아니면 우아한 해결 방법을 찾았습니까? 'header = F'를 지정하는 제안 된 방법은 괜찮습니다. – jbaums

답변

2

header=TRUE을 지정하는 경우 ?read.fwf에 따라 sep으로 열 이름을 구분해야합니다. 기본값은 이름이 \t (탭 문자)으로 구분되어 있으며 데이터에 적용되지 않아야합니다.

다음 작품 잘 :이 (더) 재현 할 수 있도록

w <- c(11, 10, 57, 16, 3, 5, 8) 

read.fwf(widths=w, header=TRUE, sep='|', 
file=textConnection('LastName |Date  |email             |CreditCardNum |Age|Zip |Amount 
Paul  21/02/14 [email protected]      4241033422900360 6738851$14.39 
Bullock  2/7/[email protected]      5178789953524240 3336538$498.31 
Mcmahon  11/5/[email protected]        5389589582467450 7734302$92.44 
Walters 25/09/13 [email protected]      5157094536097720 7794007$206.60 
Franco  17/06/13 [email protected]         345477952996264 2415873$89.12')) 
+0

"sep"인수가'read.fwf()'에서 어떤 용도로 사용되어 졌는지 궁금합니다. 종류는 목적을 저 버린다. 어느 쪽이든, 저는 수정이 작고 쉽게 자동화 될 수 있다고하더라도 실제 데이터를 수정하지 않아도되는 솔루션을 기대했습니다. 또한'w'는 여러분이 (정당하게) 가정 한 것과는 다릅니다. 위의 내 의견을 참조하십시오. – shadowtalker

+0

그냥 나이와 지퍼를 합친 것으로 나타났습니다. 내 게시물을 수정하겠습니다. 나는 또한'fwf' 데이터의 헤더가 일반적으로 후속 행과 동일한 너비라는 인상하에 있었기 때문에 중복성에 관해 당신에게 동의합니다. – jbaums

+0

그들은 같은 너비입니다, 그것은 단지 간격이 꺼져있는 것입니다. 이 단계 이후에 나는 선행 및 후행 공백이 있습니다. – shadowtalker