【问题标题】:R factor with overlapping level ranges具有重叠水平范围的 R 因子
【发布时间】:2016-12-24 01:23:05
【问题描述】:

您好几天以来我一直在为一个问题苦苦挣扎,但还没有找到任何答案。

假设我有一个包含以下列的数据集:国家、人口。国家以数字形式编码,因此原始数据集如下所示:

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

【问题讨论】:

    标签: r r-factor


    【解决方案1】:

    因此 plyr-Package 中的以下函数将您的数据框划分为子数据框(每个国家/地区一个子数据框),然后总结人口值。 t 函数只是横穿你的数据框。

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

    【讨论】:

    • 您好,感谢您的回答,但不幸的是,这不是我想要的。因为因子水平仍然必须是不相交的。
    猜你喜欢
    • 2017-02-21
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多