缺少价值的Cumsum表

时间:2017-10-31 05:24:13

标签: r cumsum

dt <- data.table(Name =c("A","A","A","A","B","B","B","B","B"), 
             Number = c(1,3,3,4, 4, 1,1,5,8))

我以这种方式创建了cumsum表。

library(matrixStats)
tbl <- round(prop.table(table(dt), 1) * 100, 3)
tbl[] <- rowCumsums(tbl)
names(dimnames(tbl)) <- NULL
tbl[] <-  paste0(sub("^([^.]+)(\\.[^0]).*", "\\1\\2", tbl), "%")
cumsumtable <-  as.data.frame.matrix(tbl)

在原来的dt中,有2,6和7缺失,所以它没有反映出来。

enter image description here

我想要的cumsum表是这样的。 2,6和7填充了之前的百分比。

enter image description here

1 个答案:

答案 0 :(得分:2)

我们可以转换&#39;数字&#39;指定factor的{​​{1}}列

levels

然后运行OP的代码

dt[, Number := factor(Number, levels = min(Number):max(Number))]

这也可以在列转换为cumsumtable # 1 2 3 4 5 6 7 8 #A 25% 25% 75% 100% 100% 100% 100% 100% #B 40% 40% 40% 60% 80% 80% 80% 100%

后通过data.table方法完成
factor