2

我正在尝试使用 protovis 可视化 flickr 数据集。我确实了解可视化部分,但是我有一个关于访问数据的问题。我获得了一个示例可视化,它访问数据如下:

var data = pv.range(250).map(function(row) {
    return {
        views: parseInt(Data.data(row, 2)), //refers to the 4 row and 2nd collumn in CSV
        users: Data.data(row, 6),
        date:  Data.data(row, 8))), //more collumns excist but for now we only use these
     };
  });

据我了解,数据集的一部分现在存储在可变数据中,即视图、用户和日期。这个变量可以像字典一样被访问吗?

我想要做的是检查是否有一个用户出现超过 2 次的日期。我想过循环遍历var数据,如下所示:

dateUserDict {};

for (d=0; d < data.date.length; d++ ){
    for (i=0; i < data.users.length; i++ ){
        for (j=0; j < data.users.length; j++){
            if (data.users[i] == data.users[j]){
                userCounter++ //this should count the number of occurences of a specific user on a specific date
                dateUserDict[data.date] = [data.user][userCounter]}
        }
    }
}

这似乎不起作用。我正在尝试将事件(用户在特定日期发生的次数)存储在字典中。如果我得到所描述的字典,我可以很容易地想象整个事情。但正是这种从第一个 dict(数据)到第二个(dateUserDict)的转换让我很烦恼!

非常感谢任何帮助或推动!

谢谢

约里特

4

1 回答 1

1

您提供的函数将生成一个 Javascript 对象数组。

var data = pv.range(250).map(function(row) {
  return {
    views: parseInt(Data.data(row, 2)), //refers to the 4 row and 2nd collumn in CSV
    users: Data.data(row, 6),
    date:  Data.data(row, 8))), //more collumns excist but for now we only use these
  };
});

结果将如下所示:

var data = [ {views:10, users: 9, date: '09/13/1975'}, ... ]

因此,不要使用 data.users.length,而是使用 data.length,而不是使用 data.users[i],而应该使用 data[i].users 等。

于 2011-04-27T20:08:43.037 回答