【发布时间】:2017-05-14 02:49:02
【问题描述】:
我正在尝试获取一个表格,其中包含在 for 循环中计算的所有值。我检查了每个 d6-d10 长度的长度,它是 35,与“ou”的长度相同。我能够将这些值中的每一个存储为向量。在这种情况下,“ou”是安哥拉、博茨瓦纳等国名。
ou<- sort(unique(vldata$OperatingUnit)
for (i in ou) {
d6 <- sum(vldata$FY2016APR[vldata$indicator=="TX_CURR" & vldata$OperatingUnit==i],na.rm = TRUE)
d7 <- sum(vldata$FY2016Q2[vldata$indicator=="TX_CURR" & vldata$OperatingUnit==i],na.rm = TRUE)
d8 <- sum(vldata$FY2016APR[vldata$indicator=="TX_VIRAL" & vldata$numeratorDenom=="D" & vldata$OperatingUnit==i], na.rm = TRUE)
d9 <- sum(vldata$FY2016APR[vldata$indicator=="TX_VIRAL" & vldata$numeratorDenom=="N" & vldata$OperatingUnit==i], na.rm = TRUE )
d10 <- sum(vldata$FY2016APR[vldata$indicator=="TX_VIRAL" & vldata$categoryOptionComboName=="Undetectable" &
vldata$OperatingUnit==i], na.rm = TRUE)
dash1.table <- table(vldata$OperatingUnit,d6, d7, d8, d9, d10)
}
错误:Error in table(vldata$OperatingUnit, d6, d7, d8, d9, d10, :
all arguments must have the same length
> str(ou)
List of 1
$ : Factor w/ 35 levels "Angola","Asia Regional Program",..: 1 1 1 1 1 1 1 1 1 1 ...
str(vldata$OperatingUnit)
Factor w/ 35 levels "Angola","Asia Regional Program",..: 1 1 1 1 1 1 1 1 1 1 ...
运行循环后,我得到:
str(i)
Factor w/ 35 levels "Angola","Asia Regional Program",..: 1 1 1 1 1 1 1 1 1 1 ...
我的数据中的 30 个样本行(>200k 行)。您可以使用 UIDAll 作为运营单位名称或国家/地区名称。
structure(list(UIDAll = structure(c(4L, 19L, 30L, 21L, 12L, 1L,
24L, 20L, 9L, 22L, 13L, 8L, 3L, 6L, 5L, 29L, 7L, 18L, 25L, 15L,
2L, 23L, 11L, 14L, 17L, 16L, 10L, 27L, 26L, 28L), .Label = c("a7kj6yR3FRT",
"a9b2mJ4Z5Kv", "bcYTjHaZcE4", "CVAHCZfm5MK", "d507u4dhfug", "dBBdk4e1xGM",
"h54eHtqrMYc", "h5siIA7lQfx", "Hk6QKCvBV9B", "I3Pvb7ryppf", "IrB4tyQKF5E",
"JgEjEEV5Nsy", "JKnoiKiTSgm", "loiaqD14rjG", "mtHydPyChpG", "nPh5JYQQyqa",
"oWG1PMWA3N1", "QDkCAOGVng6", "QZwDp4lHXWp", "rV9MIblAWIF", "s6HYTxvqhzX",
"sNi4VZ2HDoT", "WGkhTclMK4U", "wZsEzdJHKVJ", "XME74MPBxXl", "Y63LmT4BKqS",
"ycP81nJei2m", "yhnSeJ5NaC2", "yqGgSdD5hP3", "Z4XPx6jaeFf"), class = "factor"),
indicator = structure(c(2L, 2L, 1L, 3L, 3L, 3L, 3L, 2L, 3L,
3L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 1L, 3L, 1L, 3L, 3L, 2L, 3L,
2L, 3L, 2L, 2L, 3L, 2L), .Label = c("TX_CURR", "TX_UNDETECT",
"TX_VIRAL"), class = "factor"), numeratorDenom = structure(c(2L,
1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("D",
"N"), class = "factor"), categoryOptionComboName = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 5L, 3L, 1L, 5L, 1L, 1L, 1L, 1L, 5L, 1L,
4L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 3L, 1L, 3L, 1L, 2L, 3L), .Label = c("default",
"Detectable", "Routine", "Targeted", "Undetectable"), class = "factor"),
FY2016Q2 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 764L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), FY2016Q4 = c(71L, NA, NA, NA, 43L, NA,
844L, 2130L, NA, 0L, -9L, 0L, NA, NA, 0L, NA, NA, 643L, NA,
NA, NA, NA, 48L, NA, 889L, NA, 89L, 651L, NA, 115L), FY2016APR = c(71L,
NA, NA, NA, 43L, NA, 844L, 2130L, NA, 0L, -9L, 0L, NA, NA,
0L, NA, NA, 643L, NA, NA, NA, NA, 48L, NA, 889L, NA, 89L,
651L, NA, 115L)), .Names = c("UIDAll", "indicator", "numeratorDenom",
"categoryOptionComboName", "FY2016Q2", "FY2016Q4", "FY2016APR"
), row.names = c(NA, -30L), class = "data.frame")
这里ou 是list(vldata$UIDALL)
【问题讨论】:
-
@Hack-R 谢谢,我添加了数据子集
-
这是
vldata的样本,所以ou将是list(vldata$UIDALL)。我发现名称不一致。我已经更正了。 -
在代码中你有
OperatingUnit。我认为我们应该将其替换为UIDALL对吧? -
是的,操作单元 = UIDAll。我无法在数据中分享实际的运营单位名称
-
请看我更新的答案。我想我明白你现在想要什么结果了。
标签: r for-loop statistics