我必须使用学生证和教师证来将学生与他们的老师配对。一个学生只能与一位老师配对。但是,一个学生可能与同一个老师有多个条目。我只想保留学生与一位唯一的老师匹配的情况。这是数据帧的示例。
CHID <- c(111,111,111,112,112,113,113,113,113,114), TEAID <- c(115,115,115,162,165,168,168,168,187,119), SCORE <- c(56,56,56,55,55,58,58,58,58,64)
根据这些数据,我希望保留CHID为111和114的学生,因为他们与一位且只有一位独特的老师匹配。可以请一些R代码执行此任务吗?非常感谢您的协助。
答案 0 :(得分:2)
这是使用dplyr
软件包的解决方案-
df <- data.frame(
CHID = c(111,111,111,112,112,113,113,113,113,114),
TEAID = c(115,115,115,162,165,168,168,168,187,119),
SCORE = c(56,56,56,55,55,58,58,58,58,64)
)
group_by(df, CHID) %>% filter(n_distinct(TEAID) == 1) %>% ungroup()
# A tibble: 4 x 3
# CHID TEAID SCORE
# <dbl> <dbl> <dbl>
# 1 111 115 56.0
# 2 111 115 56.0
# 3 111 115 56.0
# 4 114 119 64.0
这是没有任何外部软件包的解决方案-
df[ave(df$TEAID, df$CHID, FUN = function(x) length(unique(x))) == 1, ]
# CHID TEAID SCORE
# 1 111 115 56
# 2 111 115 56
# 3 111 115 56
# 10 114 119 64