我已经模拟了这样的数据:
LastName Date email CreditCardNum AgeZip Amount
Paul 21/02/14 Aliquam.fringilla@dolordapibus.co.uk 4241033422900360 6738851$14.39
Bullock 2/7/2014adipiscing.fringilla@lectusjusto.org 5178789953524240 3336538$498.31
Mcmahon 11/5/2013lobortis.ultrices@lacus.org 5389589582467450 7734302$92.44
Walters 25/09/13 consectetuer.cursus.et@sitamet.org 5157094536097720 7794007$206.60
Franco 17/06/13 et@disparturientmontes.ca 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,]
我没有使用header=T
的原因是它给了我错误:
Error in read.table(file = FILE, header = header, sep = sep, row.names = row.names, : more columns than column names
这不是真的。我知道宽度(w
)是正确的。那么这个错误来自哪里?我的解决方案很好,我只想了解发生了什么。
答案 0 :(得分:3)
如果您指定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 Aliquam.fringilla@dolordapibus.co.uk 4241033422900360 6738851$14.39
Bullock 2/7/2014adipiscing.fringilla@lectusjusto.org 5178789953524240 3336538$498.31
Mcmahon 11/5/2013lobortis.ultrices@lacus.org 5389589582467450 7734302$92.44
Walters 25/09/13 consectetuer.cursus.et@sitamet.org 5157094536097720 7794007$206.60
Franco 17/06/13 et@disparturientmontes.ca 345477952996264 2415873$89.12'))