我有一个包含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)
我认为我应该以某种方式结合使用过滤器,但我没有设法做到这一点。我非常感谢你的帮助;)
答案 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