我有一个像
这样的数据集 Student_ID City Branch Name_of_University
M2001 Hyderabad C.S.E JNTU
M2002 Delhi E.C.E DelhiUniversity
M2003 Hyderabad C.S.E
M2004 Chennai I.T
M2005 Chennai C.S.E AnnaUniversity
M2006 Hyderabad E.C.E OU
M2007 Delhi I.T
M2008 Chennai E.C.E
我想根据城市填写Name_University的缺失值,比如M2003可以填充OU或JNTU,但如果JNTU看起来比OU多,那么最好填写JNTU。那么我如何根据与城市相对应的最大出现次数来决定大学名称。
我需要在R中这样做。请帮帮我!
答案 0 :(得分:3)
可能这接近你想要的:
> # example data set
> set.seed(0)
> df <- data.frame(city = LETTERS[sample(3,20,TRUE)], univ = letters[sample(3,20,TRUE)])
> df$univ[sample(20, 5)] <- NA
> df
city univ
1 C c
2 A c
3 B a
# .. snip ..
18 C c
19 C a
20 B <NA>
>
> # find max occurance of univ for each city
> ma <- daply(df, .(city), function(x) names(which.max(table(x$univ))))
> ma
A B C
"b" "a" "a"
>
> # replace the NA with the max value
> df$univ <- ifelse(is.na(df$univ), ma[df$city], as.character(df$univ))
> df
city univ
1 C c
2 A c
3 B a
# .. snip ..
18 C c
19 C a
20 B a