2016-08-09 2 views
0

У меня есть следующий набор данных:Объединение строк в г (с категориальными переменными)

library(babynames) 
hadley <- dplyr::filter(babynames, name == "Hadley") 


    year sex name  n   prop 
    <dbl> <chr> <chr> <int>  <dbl> 
1 1906  M Hadley  6 4.164584e-05 
2 1908  M Hadley 16 9.616887e-05 
3 1909  M Hadley 14 7.915552e-05 
4 1910  M Hadley  5 2.397783e-05 
5 1911  M Hadley  9 3.728375e-05 
6 1912  M Hadley 11 2.436566e-05 
7 1913  M Hadley 10 1.864830e-05 
8 1914  M Hadley 15 2.195171e-05 
9 1915  M Hadley 14 1.589197e-05 
10 1916  M Hadley 14 1.516359e-05 
# ... with 147 more rows 

На графике мы можем видеть, что мы должны объединить некоторые наблюдения:

ggplot(hadley, aes(year, n)) + geom_line() 

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

d <- aggregate(x = hadley,by = list(hadley$year),'sum') 

Как исправить код?

+0

Что вы хотите подвести? 'n' и' prop' за этот конкретный год? –

+1

Вы имеете в виду, что график выглядит странным в последующие годы, потому что для каждого года существует ряд для мужчин (низкий N) и женщин (высокий N)? Например, 'ggplot (hasley%>% filter (year> 1990), aes (year, n)) + geom_line()'. Если вы хотите объединить обоих полов за один год, вы почти там. Вам нужно 'x = hadley $ n'. См. Http://stackoverflow.com/questions/1660124/how-to-sum-a-variable-by-group. –

+0

@RonakShah Я хочу добавить 'n' –

ответ

0

Ваша проблема в том, что для «Хэдли» есть отдельные записи для мужчин и женщин. Вы можете либо построить их по отдельности:

ggplot(hadley, aes(year, n, group = sex, colour = sex)) + geom_line() 

Или вы могли бы объединить их, как вы просили:

library(dplyr) 
hadley2 <- hadley %>% 
       group_by(year)%>% 
       summarize(numbers=sum(n)) 


ggplot(hadley2, aes(year, numbers)) + geom_line() 
Смежные вопросы