在读取包含一些数字标题的csv文件时,data.table中的fread函数不会读取标题。我得到的输出的一部分是:
df2 <- fread("filename.csv", header = T)
head(df2)
V1 V2
1: Country Name Country Code
2: Afghanistan AFG
3: Afghanistan AFG
4: Afghanistan AFG
5: Afghanistan AFG
6: Afghanistan AFG
V3
1: Indicator Name
2: (%) Benefits held by 1st 20% population - All Social Insurance
3: (%) Benefits held by 1st 20% population - All Social Protection
4: (%) Benefits held by 1st 20% population - All Social Safety Nets
5: (%) Benefits held by 1st 20% population - Unemp benefits and ALMP
6: (%) Generosity of All Social Insurance
V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
1: Indicator Code 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971
2: allsi.bi_q1 NA NA NA NA NA NA NA NA NA NA NA NA
3: allsp.bi_q1 NA NA NA NA NA NA NA NA NA NA NA NA
4: allsa.bi_q1 NA NA NA NA NA NA NA NA NA NA NA NA
5: lm_ub.bi_q1 NA NA NA NA NA NA NA NA NA NA NA NA
6: allsi.gen_pop NA NA NA NA NA NA NA NA NA NA NA NA
V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31
1: 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986
2: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
4: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
5: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
6: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
V32 V33 V34 V35 V36 V37 V38 V39 V40 V41 V42 V43 V44 V45 V46
1: 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001
2: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
4: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
5: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
6: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
V47 V48 V49 V50 V51 V52 V53 V54 V55 V56 V57 V58
1: 2002 2003 2004 2005 2006 2007.00000 2008 2009 2010 2011 2012 2013
2: NA NA NA NA NA 3.76921 NA NA NA NA NA NA
3: NA NA NA NA NA 7.03019 NA NA NA NA NA NA
4: NA NA NA NA NA 8.24805 NA NA NA NA NA NA
5: NA NA NA NA NA NA NA NA NA NA NA NA
6: NA NA NA NA NA 12.93310 NA NA NA NA NA NA
但是,read.csv(对于大文件来说非常慢)会使数字标题保持前导X
df1 <- read.csv("filename.csv", header = T)
head(df1)
Country.Name Country.Code
1 Afghanistan AFG
2 Afghanistan AFG
3 Afghanistan AFG
4 Afghanistan AFG
5 Afghanistan AFG
6 Afghanistan AFG
Indicator.Name
1 (%) Benefits held by 1st 20% population - All Social Insurance
2 (%) Benefits held by 1st 20% population - All Social Protection
3 (%) Benefits held by 1st 20% population - All Social Safety Nets
4 (%) Benefits held by 1st 20% population - Unemp benefits and ALMP
5 (%) Generosity of All Social Insurance
6 (%) Generosity of All Social Protection
Indicator.Code X1960 X1961 X1962 X1963 X1964 X1965 X1966 X1967 X1968 X1969
1 allsi.bi_q1 NA NA NA NA NA NA NA NA NA NA
2 allsp.bi_q1 NA NA NA NA NA NA NA NA NA NA
3 allsa.bi_q1 NA NA NA NA NA NA NA NA NA NA
4 lm_ub.bi_q1 NA NA NA NA NA NA NA NA NA NA
5 allsi.gen_pop NA NA NA NA NA NA NA NA NA NA
6 allsp.gen_pop NA NA NA NA NA NA NA NA NA NA
X1970 X1971 X1972 X1973 X1974 X1975 X1976 X1977 X1978 X1979 X1980 X1981 X1982
1 NA NA NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA NA NA NA NA
X1983 X1984 X1985 X1986 X1987 X1988 X1989 X1990 X1991 X1992 X1993 X1994 X1995
1 NA NA NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA NA NA NA NA
X1996 X1997 X1998 X1999 X2000 X2001 X2002 X2003 X2004 X2005 X2006 X2007
1 NA NA NA NA NA NA NA NA NA NA NA 3.76921
2 NA NA NA NA NA NA NA NA NA NA NA 7.03019
3 NA NA NA NA NA NA NA NA NA NA NA 8.24805
4 NA NA NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA NA 12.93310
6 NA NA NA NA NA NA NA NA NA NA NA 16.84360
X2008 X2009 X2010 X2011 X2012 X2013
1 NA NA NA NA NA NA
2 NA NA NA NA NA NA
3 NA NA NA NA NA NA
4 NA NA NA NA NA NA
5 NA NA NA NA NA NA
6 NA NA NA NA NA NA
所以,我的问题是如何在使用fread函数读取csv文件时保留数字标题?
答案 0 :(得分:0)
这看起来像世界银行的WDI。我使用以下代码在R中输入数据并转换为长格式。希望它有所帮助。
library(data.table); library(reshape2)
WDI <- fread(input="WDI_Data.csv", header=TRUE, verbose=TRUE)
setnames(WDI, c("country","iso3","indicator.name","indicator.code",paste0(1960:2013)))
WDI <- data.table(melt(data=WDI, na.rm=TRUE, id.vars=c("country","iso3","indicator.name","indicator.code"), variable.name="year", value.name="indicator.value"))
WDI[, year := as.integer(as.character(year))]
setcolorder(WDI, c("country","iso3","year", "indicator.code","indicator.name","indicator.value"))
setkeyv(WDI,c("iso3","year", "indicator.code"))
str(WDI)
如果需要,可以使用数字名称,在融合数据集之前使用它:
summary(WDI$`2000`)