【问题标题】:Converting Count Data to Individual Data [duplicate]将计数数据转换为单个数据 [重复]
【发布时间】:2019-06-28 19:35:06
【问题描述】:

我有一个数据集,其中包含每种特征组合的计数。下面提供了一个玩具示例。因此,例如,有 3 名 18 岁的女性赚了 65,000 美元。

AGE=c(18,19,18,19)
SEX=c("M","F","F","M")
INCOME=c(70000,60000,65000,75000)
COUNT =c(1,2,3,4)
df<-data.frame(AGE,SEX,INCOME,COUNT)

我想根据计数重复每个观察 n 次。我已经使用 for 循环完成了这项工作,但我发现这在 R 中效率非常低。

df4<-data.frame(AGE=c(),SEX=c(),INCOME=c(),COUNT=c())
for(i in 1:nrow(df)){
  n <- df[i,4]
  df4<-rbind(df4,df[rep(i, n), ])
}

有什么更有效的方法来做到这一点?

【问题讨论】:

标签: r


【解决方案1】:
library(dplyr)
library(tidyr)

AGE=c(18,19,18,19)
SEX=c("M","F","F","M")
INCOME=c(70000,60000,65000,75000)
COUNT =c(1,2,3,4)
df<-data.frame(AGE,SEX,INCOME,COUNT)

df %>% 
    uncount(COUNT)
#>     AGE SEX INCOME
#> 1    18   M  70000
#> 2    19   F  60000
#> 2.1  19   F  60000
#> 3    18   F  65000
#> 3.1  18   F  65000
#> 3.2  18   F  65000
#> 4    19   M  75000
#> 4.1  19   M  75000
#> 4.2  19   M  75000
#> 4.3  19   M  75000

reprex package (v0.2.1) 于 2019 年 6 月 28 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多