使用uncount复制r中的某些列,但不复制其他列

使用uncount复制r中的某些列,但不复制其他列,r,R,我正在使用一个有两个不同计数的数据集,最终目标是得到给定年份的一个与另一个的比率。每一行都是同一组人——因此在下面的数据框架中,第一次观察是1990年的一组人,共有9名成员,其中一名成员具有某种兴趣特征 year <- c(1990, 1990, 1991, 1992, 1992) count_1 <- c(9, 8, 8, 7, 4) count_2 <- 1, 0, 0 1, 1) df <- data.frame(year, count_1, count_2)

我正在使用一个有两个不同计数的数据集,最终目标是得到给定年份的一个与另一个的比率。每一行都是同一组人——因此在下面的数据框架中,第一次观察是1990年的一组人,共有9名成员,其中一名成员具有某种兴趣特征

year <- c(1990, 1990, 1991, 1992, 1992)
count_1 <- c(9, 8, 8, 7, 4)
count_2 <- 1, 0, 0 1, 1)

df <- data.frame(year, count_1, count_2)
这对
count_1
列非常有效-总观察值为36,与总人数相匹配。然而,它也重复了
count_2
列,因此现在我们有20人,而不是3个具有兴趣特征的人。有没有更好的方法来扩展数据集,或者有没有更好的方法来构造原始数据以使其工作


我也尝试了
expandRows()
,但遇到了同样的问题。我也尝试过先将
count_2
从数据帧中拉出以保留它,但现在我不确定如何将它放回最终的数据帧并匹配观察值,因为行号现在不同了。

问题不是非常清楚(为什么要使用
uncount
?),因此,我只根据这句话给你们两种方法:

最终目标是获得给定年份的一对另一比率

year`summary()`解组输出(用`.groups`参数覆盖)
#>#tibble:3 x 4
#>年份计数\u 1计数\u 2比率\u 2与\u 1
#>                 
#> 1  1990      17       1       0.0588
#> 2  1991       8       0       0     
#> 3  1992      11       2       0.182
使用
数据表
包:

库(data.table)
数据表(dat)[,lappy(.SD,sum),按=“年”][
,比率2 1:=计数2/计数1][]
#>年份计数\u 1计数\u 2比率\u 2与\u 1
#> 1: 1990      17       1   0.05882353
#> 2: 1991       8       0   0.00000000
#> 3: 1992      11       2   0.18181818

谢谢,但这基本上与我最初遇到的问题相同-1990年仍有9个观察值,
count_2
为1,而我希望只有1个观察值。谢谢,这绝对可以得到我想要的比率!伟大的如果答案对你有效,请随意接受。否则,您可以等待更多响应。
df <- df %>%
uncount(count_1, .remove = F)