Заполните пропущенные значения в наборе данных, используя значения из другого столбца - PullRequest
1 голос
/ 18 сентября 2011

У меня есть набор данных, такой как

    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. Пожалуйста, помогите мне!

1 Ответ

3 голосов
/ 18 сентября 2011

вероятно, это близко к тому, что вы хотите:

> # 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...