簡體   English   中英

水平范圍重疊的R因子

[英]R factor with overlapping level ranges

嗨,自幾天以來,我一直在為一個問題而苦苦掙扎,但尚未找到任何答案。

假設我有一個帶有列的數據集:國家,人口。 國家/地區以數字編碼,因此原始數據集如下所示:

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

我希望國家/地區成為以下級別的因素:法國,德國,加拿大,美國,印度,中國和歐洲,美國,亞洲。 可以說一個因素組合:

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()但是那不是我想要的。

因此,plyr-Package中的以下功能將您的數據框划分為子數據框(每個國家一個子數據框),然后對總體值求和。 t函數只是橫切您的數據框。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM