D3读取csv/tsv文件,如果列名是数字

d3 reading csv/tsv files if column names are numbers?

本文关键字:如果 数字 文件 读取 csv tsv D3      更新时间:2023-09-26

使用世界银行的数据进行一个项目。他们的数据是这样组织的,在他们的csv中有单独的年份作为列名。除了可能更改名称之外,我将如何使用d3.csv访问它们并将它们映射到自定义数组中,因为我不会使用所有的值。

例如,我使用的文件是每个国家的GDP。每个元素/行的格式如下

"Country Name","Country Code","Indicator Name","Indicator Code", "1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013",

如果我想要英国、巴西、中国、俄罗斯、美国等国家2004-2012年的GDP值,我该怎么做?

代码看起来像这样吗

d3.csv(URL, function(d) {
     return {
         AttributeName : d.ColumnName
         //Continues for all columns I need
     };
});

同样,如果列名是一个实际的整数,d.ColumnName将不起作用。如何解释列名中的空格,如所示?如何在文档本身或控制台中正确显示元素?

我为这么多问题道歉。请随时指导我解决方案。谢谢。

感谢Lars的回答。我将附加我想要做的下一步。现在,如果我想用这些数据制作一个线形图,我该如何访问生成的对象数组呢?同样,我只想要特定国家的200+元素数组。

您可以通过使用访问属性的替代语法来解决所有这些问题——而不是

d.foo

你可以写

d["foo"]

这也适用于空格,数字等:

d["11111"]
d["string with spaces"]