我正在用R开始开发,我仍然对语言有“初学者问题”。我想做以下事情:
有关如何使用R执行此操作的任何线索?在此先感谢您的帮助!
数据:
artists
:pastebin.com/dm7weLMG
答案 0 :(得分:2)
我有一个矩阵(数据框:=用户),有〜900列,每个列都是一个乐队的名字(Nirvana,Green Day,Daft-Punk等)。
在每一排我都有一个用户和用户的音乐品味(Nirvana = 10,Green Day = 5,Daft Punkt = 0)
这就是所谓的“宽”格式。对于大多数任务来说,将其重新整形为窄格式会更好,即对于具有两列的单个data.frame,一列识别用户而另一列识别该带。有几种工具可以做到这一点,这里有几个问题。请特别查找reshape标记。
还有一个名为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
。