2014-09-06 42 views
2

我试图读取以下链接CSV:http://databank.worldbank.org/data/download/GDP.csv读的.csv - 分离问题

我有两个问题:

  1. 这个表有其列之间不同的分隔符(例如,第一第二列用逗号隔开,但第二列和第三列用两个逗号分隔)。
  2. 每行以5个逗号结尾。

我想过用read.fwf()函数读取表来解决问题1和2.但是,我不认为这是一个合适的解决方案,因为某些列内的值可能会有所不同(例如在国家专栏中可以找到“美国”和“意大利”)。

+1

你打开用Excel文件?我做了,这是一团糟。如果我是你的话,我首先要用我需要的数据创建一张干净的纸张,然后试着读取它来清理它。您也可以先删除所有逗号。 – 2014-09-06 19:49:23

+0

我刚刚编辑链接直接下载csv。关于在Excel中打开文件,我想它可以工作,但我正在寻找一个基于R的解决方案。事实并非如此,但在Excel中打开文件可能会导致丢失单元格中的前导零,所以我更愿意学习如何从R做所有事情。感谢您的回复。 – Victor 2014-09-06 19:54:02

+0

这是有道理的,但我仍然建议首先在Excel中查看数据(特别是当它很小)时,从网上下载的东西。你永远无法知道什么惊喜等着你,这可能会搞砸一切。 @MrFlick如何知道他需要跳过前5行否则? – 2014-09-06 19:59:48

回答

3

很明显,这个“CSV”文件已被格式化为看起来漂亮,而不是实际上有用。这并不是说它有不同的分隔符,而是它缺少了列。如何清除它的东西,如

dd <- read.csv("http://databank.worldbank.org/data/download/GDP.csv", skip=5, header=F)[,c(1,2,4,5)] 
names(dd) <- c("CountryID","Ranking","Economy","GDP") 
dd<-dd[dd[,1]!="",] #get rid of rows without IDs 

head(dd) 

# CountryID Ranking  Economy   GDP 
# 1  USA  1 United States 16,800,000 
# 2  CHN  2   China 9,240,270 
# 3  JPN  3   Japan 4,901,530 
# 4  DEU  4  Germany 3,634,823 
# 5  FRA  5   France 2,734,949 
# 6  GBR  6 United Kingdom 2,522,261 

R不喜欢在数量逗号所以你可能也想

dd$GDP <- as.numeric(gsub(",","",dd$GDP)) 
+0

@DavidArenburg是的,决定摆脱缺少ID值的所有行。当然,了解你的敌人总是一个好主意。 – MrFlick 2014-09-06 19:57:02

+0

这很棒,正是我所期待的。你能否在第一行结尾处给我解释“[,c(1,2,4,5)]”? – Victor 2014-09-06 20:03:30

+0

这只是为了抓住有用的非空列的子集。只有1,2,4和5列似乎有你感兴趣的数据。 – MrFlick 2014-09-06 20:04:17