r - 合并两个表并聚合

标签 r

我有两个表名称和成绩,如下所示:

表:名称

Male   Female

Sam    Tina
       Anna

表:成绩

Class  Name  Grades
A      Sam   5
B      Sam   5
A      Tina  5
B      Tina  5
C      Tina  5
A      Anna  5

合并后新表应如下所示:

Class Gender Grades
A     Male   5
B     Male   5
A     Female 10
B     Female 5
C     Female 5

我尝试过groupby、merge,但它总是给我一个错误的表。 我可以使用任何函数来获取正确的表吗?谢谢!!

最佳答案

使用stackname数据帧转换为长格式。然后照常合并,然后聚合性别类别:

aggregate(Grades ~ Class + ind,
          merge(grades, na.omit(stack(name)), by.x = "Name", by.y = "values"), sum)
#   Class    ind Grades
# 1     A   Male      5
# 2     B   Male      5
# 3     A Female     10
# 4     B Female      5
# 5     C Female      5

#data
name <- read.table(text = "
Male Female
Sam Tina
NA Anna", header = TRUE)

grades <- read.table(text = "
Class  Name  Grades
A      Sam   5
B      Sam   5
A      Tina  5
B      Tina  5
C      Tina  5
A      Anna  5", header = TRUE)

关于r - 合并两个表并聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65787824/

相关文章:

r - 基于R中的多个因素确定多个变量的频率

r - 如何匹配字符串中的多个模式?

r - emo::ji 不会在针织文档中呈现

r - ggplot : color gradient of bars using user values

r - 在需要更新版本的 R 的 Ubuntu 10.04 上从源代码安装 RStudio

r - 错误 : Input files not all in same directory, 请提供明确的 wd

r - 将多列合二为一的复杂数据框转换

将数据框从行 id 重新排列为列 id

python - 在 scikit-learn 中实现 R 随机森林特征重要性评分

与 Active Directory 集成的 Azure 应用服务上的 R Shiny 应用