是否有 R 函数可以聚合分类列中特定行的计数?
Is there an R function that can aggregate the count of a specific row in a categorical column?
我希望每个人都过得很好。我在尝试在 R 中聚合时有点脑残。可以说我有这个 df:
student
subject
Amber
math
Colin
math
Bob
science
Amber
math
Amber
science
我想计算学生的科目是数学的次数并将其添加到数据框中,因此结果将如下所示:
student
subject
total 'math'
Amber
math
2
Colin
math
1
Bob
science
0
Amber
math
2
Amber
science
2
这可能吗?我尝试了 aggregate(subject["math"] ~ student, data = df, length) 只是为了完成第一部分,但我得到了“Error in model.frame.default(formula = subject["math"] ~ : variable长度不同(找到 'student')。
提前致谢!
我尝试了一种不同的方法,它与您的期望输出不同,但这对您有用吗?
my_df <- data.frame("Student" = c("Amber", "Colin", "Bob", "Amber", "Amber"),
"Subject" = c("math", "math", "science", "math", "science"),
stringsAsFactors = FALSE)
my_df <- my_df %>% group_by(Student, Subject) %>% summarise("Total" = n())
library(dplyr)
df_with_count<-df%>%group_by(student,subject)%>%mutate(count=n())
我想你想要这样的东西
library(magrittr)
library(dplyr)
df <- data.frame(
student = c("Amber", "Colin", "Bob", "Amber", "Amber"),
subject = c("math", "math", "science", "math", "science")
)
df %>% group_by(student,subject) %>% mutate(`Total math` = n()) %>% filter(`Total math` > 0) %>% filter (subject=="math") %>% distinct -> df2
merge(x=df, y=df2, by="student", all.x = TRUE) %>% mutate(`Total math` = ifelse(!is.na(`Total math`), `Total math`,0)) %>% rename(subject="subject.x") %>% select(student, subject, `Total math`) %>% print
我希望每个人都过得很好。我在尝试在 R 中聚合时有点脑残。可以说我有这个 df:
student | subject |
---|---|
Amber | math |
Colin | math |
Bob | science |
Amber | math |
Amber | science |
我想计算学生的科目是数学的次数并将其添加到数据框中,因此结果将如下所示:
student | subject | total 'math' |
---|---|---|
Amber | math | 2 |
Colin | math | 1 |
Bob | science | 0 |
Amber | math | 2 |
Amber | science | 2 |
这可能吗?我尝试了 aggregate(subject["math"] ~ student, data = df, length) 只是为了完成第一部分,但我得到了“Error in model.frame.default(formula = subject["math"] ~ : variable长度不同(找到 'student')。
提前致谢!
我尝试了一种不同的方法,它与您的期望输出不同,但这对您有用吗?
my_df <- data.frame("Student" = c("Amber", "Colin", "Bob", "Amber", "Amber"),
"Subject" = c("math", "math", "science", "math", "science"),
stringsAsFactors = FALSE)
my_df <- my_df %>% group_by(Student, Subject) %>% summarise("Total" = n())
library(dplyr)
df_with_count<-df%>%group_by(student,subject)%>%mutate(count=n())
我想你想要这样的东西
library(magrittr)
library(dplyr)
df <- data.frame(
student = c("Amber", "Colin", "Bob", "Amber", "Amber"),
subject = c("math", "math", "science", "math", "science")
)
df %>% group_by(student,subject) %>% mutate(`Total math` = n()) %>% filter(`Total math` > 0) %>% filter (subject=="math") %>% distinct -> df2
merge(x=df, y=df2, by="student", all.x = TRUE) %>% mutate(`Total math` = ifelse(!is.na(`Total math`), `Total math`,0)) %>% rename(subject="subject.x") %>% select(student, subject, `Total math`) %>% print