如何按照与两个表连接的条件选择行

时间:2016-07-18 14:08:54

标签: r

我有一个包含2列的表格"name""grade"。在"name"列中,我存储了可以多次复制的数据。想象一下这个问题,让我们创建一个简单的短表,如下所示:

list <- data.frame(c("Natalia", "Alex", "Adam", "Natalia", "Natalia", "Alex", "Natalia", "Adam"), c(5, 6, 5, 4, 5, 4, 3, 4))
colnames(list) <- c("name", "grade")

我希望获得一个包含两列的dataframe - 第一列中的"name"列中的唯一数据列表,以及每秒中每个名称的等级总和。 我创建的第一列是这样的:

n_occur <- data.frame(table(list$name))

它的确有效 - 我在上一张表中有一列独特的名字 不幸的是,我不知道如何计算每个名字的成绩。它或多或少像下面的伪代码,但我不太熟悉r语法,所以对我来说有点困难。

sum(list$grades) where (list$names == n_occur$X1)

我认为我应该以某种方式结合使用过滤器,但我没有设法做到这一点。我非常感谢你的帮助;)

1 个答案:

答案 0 :(得分:1)

这就是你要找的东西;

library(dplyr)
list%>%
   group_by(name)%>%
   summarise(sum(grade))
#Source: local data frame [3 x 2]

#     name sum(grade)
#   (fctr)      (dbl)
#1    Adam          9
#2    Alex         10
#3 Natalia         17