【发布时间】:2015-10-07 05:39:42
【问题描述】:
我有通过 table/cumsum 命令生成的下表。
> temp
numCars
18 1
17 2
16 8
15 18
14 25
13 29
12 42
11 55
10 70
9 134
8 160
7 172
6 177
5 180
3 181
2 181
1 181
0 181
temp <- structure(c(1L, 2L, 8L, 18L, 25L, 29L, 42L, 55L, 70L, 134L, 160L,
172L, 177L, 180L, 181L, 181L, 181L, 181L), .Dim = c(18L, 1L), .Dimnames = list(
c("18", "17", "16", "15", "14", "13", "12", "11", "10", "9",
"8", "7", "6", "5", "3", "2", "1", "0"), "numCars"))
如您所见,缺少名称 4 的行。什么是最简单的 R 方法来填充它,其中值应该是较低数字的值(在本例中为 181)。
我知道我可以用一个凌乱的 for 循环来做到这一点,我可以进去,调整它的大小,创建一个新的 DF,然后输入任何空白值。我只是想知道是否有更好的方法?
这是表格代码:
cohortSizeByMileage <- data.matrix(cumsum(rev(table(cleanMileage$OdometerBucket))))
colnames(cohortSizeByMileage) <- "numCars"
【问题讨论】:
-
rbind 并订购?
rbind(temp, '4' = 181)[as.character(18:0), , drop = FALSE] -
@rawr,在这种情况下是的,但我希望它适用于从 1 到最大值的任何缺失数字。 0 将永远存在。
-
添加表格代码。您可能可以转换为因子,以便即使计数为 0,所有级别仍将保留
-
@rawr,这是表格代码。但是请记住,我不希望它为 0,我希望它取较低级别的值?
-
我总是为这类问题编写自定义代码
标签: r