2016-08-17 4 views
0

Привет, я боюсь проблемы с момента пуска дней и еще не нашел ответа.R фактор с перекрывающимися диапазонами уровней

Предполагается, что у меня есть набор данных с колонками: Страна, Население. Страна incoded в цифрах, поэтому сырье набор данных выглядит следующим образом:

df <- data.frame(country=c(1,2,3,4,5,6), population=c(10000,20000,30000,4000,50000,60000)) 
df 
    country population 
1  1  10000 
2  2  20000 
3  3  30000 
4  4  4000 
5  5  50000 
6  6  60000 

Я хочу страна быть фактором со следующими уровнями: Франция, Германия, Канада, США, Индии, Китая и Европы, Америки, Азии. Так сказать фактор combinig:

df$country <- factor(df$country, labels = c("France", "Germany", "Canada", "USA", "India", "Asia")) 
df 
    country population 
1 France  10000 
2 Germany  20000 
3 Canada  30000 
4  USA  4000 
5 India  50000 
6 Asia  60000 

и

df$country <- cut(df$country, breaks = c(0,2,4,6),labels = c("Europe", "America", "Asia")) 
df 
    country population 
1 Europe  10000 
2 Europe  20000 
3 America  30000 
4 America  4000 
5 Asia  50000 
6 Asia  60000 

Моя цель состоит в том, чтобы сделать что-то вроде:

tapply(df$population, df$country, sum) 

с результатом, как это:

France Germany Canada USA India China Europe America Asia 
10000 20000 30000 4000 50000 60000 30000 34000 110000 

Есть ли способ этого, без создавая третий столбец в кадре данных? Я надеюсь, что это понятно, что моя проблема. Я уже пробовал interaction(), но это не то, что я хочу.

ответ

0

Таким образом, следующая функция из plyr-Package делит ваш фрейм данных на кадры суб-данных (один кадр суб-данных на страну), а затем суммирует значения совокупности. Функция t просто трансформирует ваш кадр данных.

> library(plyr) 
> neu <- ddply(df, .(country), Summe = sum(population)) 
> t(neu) 
+0

Привет, Благодарю вас за ответ, но, к сожалению, это не то, что я ищу. Поскольку все же уровни факторов должны быть непересекающимися. –

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