我有两个表名称和成绩,如下所示:
表:名称
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,但它总是给我一个错误的表。 我可以使用任何函数来获取正确的表吗?谢谢!!
最佳答案
使用stack将name数据帧转换为长格式。然后照常合并,然后聚合性别和类别:
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/