R中的矩阵变换和聚合

时间:2013-07-02 10:53:25

标签: r dataframe

我正在用R开始开发,我仍然对语言有“初学者问题”。我想做以下事情:

  1. 我有一个矩阵(数据框:=用户),有〜900列,每个列都是一个乐队的名字(Nirvana,Green Day,Daft-Punk等)。
  2. 在每行中我都有一个用户和用户的音乐品味(Nirvana = 10,Green Day = 5,Daft Punkt = 0)
  3. 我想查询另一个数据帧(:=艺术家 - 使用艺术家的音乐标签)并用其Genre-Tag(Nirvana - &gt; Rock,Green Day - &gt; Rock,Daft)替换乐队的名称-Punk - &gt; Techno)。音乐品味有大约120个标签(120 <900)
  4. 最后,我想在所有列上“聚合”值,以避免重复列。在(3)的示例中 - 使用聚合函数“SUM” - 该行只有2个条目而不是3 :( Rock = 15,Techno = 0)
  5. 有关如何使用R执行此操作的任何线索?在此先感谢您的帮助!

    数据:

    userpastebin.com/4gVe004T

    artistspastebin.com/dm7weLMG

1 个答案:

答案 0 :(得分:2)

  

我有一个矩阵(数据框:=用户),有〜900列,每个列都是一个乐队的名字(Nirvana,Green Day,Daft-Punk等)。
  在每一排我都有一个用户和用户的音乐品味(Nirvana = 10,Green Day = 5,Daft Punkt = 0)

这就是所谓的“宽”格式。对于大多数任务来说,将其重新整形为窄格式会更好,即对于具有两列的单个data.frame,一列识别用户而另一列识别该带。有几种工具可以做到这一点,这里有几个问题。请特别查找标记。

还有一个名为reshape的软件包可以在这里提供帮助。我正在谈论的过程被称为“融化”数据。

  

我想查询另一个数据帧(:=艺术家 - 使用艺术家的音乐标签)并用其Genre-Tag(Nirvana - &gt; Rock,Green Day - &gt; Rock,Daft)替换乐队的名称-Punk - &gt; Techno)。音乐品味有大约120个标签(120 <900)

您可以使用merge组合多个数据框,使用波段名称作为合并键。这就是为什么你想要乐队名称是值而不是列名。

  

最后,我想在所有列上“聚合”这些值以避免重复列。在(3)的示例中 - 使用聚合函数“SUM” - 该行只有2个条目,而不是3 :( Rock = 15,Techno = 0)

当您使用reshape将数据“强制转换”为宽格式时,您可以提供将用于组合值的聚合函数。您可以使用sum