2015-06-12 2 views
-4

Если у меня есть кадр данных, который выглядит какСуммируя вниз колонку с несколькими категориями

dat<-data.frame(val= c(1,2,3,4,5,6,7),category= c("A","B","c","A","B","c","D")) 
dat 

    val category 
1 1  A 
2 2  B 
3 3  c 
4 4  A 
5 5  B 
6 6  c 
7 7  D 

Я хотел бы в среднем на категории, так что результат выглядит

A 2.5 
B 3.5 
C 4.5 
D  7 

Что самое лучшее способ сделать это?

+1

Посмотри на [этот ответ] (http://stackoverflow.com/a/16657546/1315767) –

+2

Downvote без всякой исследовательской работы 'г среднего Cate gory' в google - первый результат: http://stats.stackexchange.com/questions/8225/how-to-summarize-data-by-group-in-r, который даст вам несколько ответов. – thelatemail

ответ

2

Самый простой способ будет использовать tapply следующим образом:

tapply(dat$val, dat$category, FUN = mean) 

Обратите внимание, что если у вас есть недостающие значения, вы хотите изменить его игнорировать те, при расчете среднего

tapply(dat$val, dat$category, FUN = mean, na.rm = TRUE) 

см? tapply

+0

, который, похоже, не работает, он просто возвращает [1] 1 2 3 1 2 3 4 – user3022875

+0

Я не уверен, что происходит с вашего конца. Если я скопирую ваш аргумент 'dat' точно, на новый сеанс' R', а затем запустите 'tapply', я получу' 2.5 3.5 4.5 7.0'. –

Смежные вопросы