R中的矩阵变换与聚合

R中的矩阵变换与聚合,r,dataframe,reshape,R,Dataframe,Reshape,我开始使用R语言进行开发,但在语言方面仍然存在“初学者问题”。我想做以下工作: 我有一个矩阵(数据框:=用户),大约有900列,每个列都是乐队的名字(涅磐、绿日、傻朋克等等) 在每一行中,我都有一个用户和用户的音乐品味(涅磐=10,绿日=5,愚蠢朋克=0) 我想查询另一个数据框(:=艺术家-带有艺术家的音乐标签),并用流派标签(涅磐-->摇滚、绿日-->摇滚、愚蠢朋克-->科技)替换乐队名称。有约120个标签用于音乐品味(120摇滚、绿日-->摇滚、愚蠢朋克-->科技)替换乐队名称。有约120个

我开始使用R语言进行开发,但在语言方面仍然存在“初学者问题”。我想做以下工作:

  • 我有一个矩阵(数据框:=用户),大约有900列,每个列都是乐队的名字(涅磐、绿日、傻朋克等等)
  • 在每一行中,我都有一个用户和用户的音乐品味(涅磐=10,绿日=5,愚蠢朋克=0)
  • 我想查询另一个数据框(:=艺术家-带有艺术家的音乐标签),并用流派标签(涅磐-->摇滚、绿日-->摇滚、愚蠢朋克-->科技)替换乐队名称。有约120个标签用于音乐品味(120<900)
  • 最后,我想“聚合”所有列上的值,以避免重复的列。在(3)中的示例中,使用聚合函数“SUM”,行将只有2个条目,而不是3个:(Rock=15,Techno=0)
  • 有关于如何使用R的线索吗?提前感谢您的帮助

    数据:

    用户

    艺术家

    我有一个矩阵(数据框:=用户),大约有900列,每个列都是乐队的名字(涅磐、绿日、傻朋克等)。
    在每一行中,我都有一个用户和用户的音乐品味(涅磐=10,绿日=5,愚蠢朋克=0)

    这就是所谓的“宽”格式。对于大多数任务来说,最好将其改为窄格式,即改为具有两列的单个data.frame,一列用于标识用户,另一列用于标识频带。有几个工具可以实现这一点,这里还有几个问题。请特别查找标签

    还有一个名为的包,可以在这里提供帮助。在这里,我所说的过程被称为“融化”数据

    我想查询另一个数据框(:=艺术家-带有艺术家的音乐标签),并用流派标签(涅磐-->摇滚、绿日-->摇滚、愚蠢朋克-->科技)替换乐队名称。有约120个标签用于音乐品味(120<900)

    您可以使用
    merge
    组合多个数据帧,将带名称用作合并键。这就是您希望标注栏名称是值而不是列名的原因

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


    当您使用
    重塑
    将数据“转换”回宽格式时,您可以提供一个聚合函数,用于组合值。您可以使用
    sum

    如果没有来自两个数据帧的实际样本数据,您将得到对此的一般响应,这将建议使用
    rowSums
    并查看。您能否以
    dput(head(artists))
    dput(head(user[,1:5])的输出形式提供此信息
    ?您希望如何按标记聚合?我的计数(从
    unique(unlist(sapply(artists[,2:6],levels)))
    )是您有505个唯一标记,这意味着要添加到
    用户的505列(每个标记一列)
    。而且标记不是互斥的,因此用户带对的分数可能最终会计入多个标记变量的分数中。这就是你想要的吗?+1代表rock>techno@jcdmb关于如何使用R实现这一点的任何线索通常都会转换成一些代码,用玩具数据来说明示例。我想你已经在网上看过这个著名的问题了