我找不到
错误:matrix / data.frame标准应符合逻辑。
在我的代码中。
#count prod_no downward
consoContact2$Count <- as.numeric("")
for (xNo in 1:nrow(consoContact2)){
consoContact2$Count[xNo] <- count_if(consoContact2[xNo,1],consoContact2[1:xNo,1])
}
数据示例:
Prod_No Order_No Reff_ID Count
1 03MB1902-118 920522XXXX 03MB1902-118'A**0920522XXXX NA
2 03MB1902-118 33333XXXX 03MB1902-118'C**033333XXXX NA
3 07MB1902-105 922977XXXX 07MB1902-105'A**0922977XXXX NA
4 07MB1902-105 32231XXXX 07MB1902-105'C**032231XXXX NA
5 07MB1902-105 32268XXXX 07MB1902-105'C**032268XXXX NA
这些必须是输出:
Prod_No Order_No Reff_ID Count
1 03MB1902-118 920522XXXX 03MB1902-118'A**0920522XXXX 1
2 03MB1902-118 33333XXXX 03MB1902-118'C**033333XXXX 2
3 07MB1902-105 922977XXXX 07MB1902-105'A**0922977XXXX 1
4 07MB1902-105 32231XXXX 07MB1902-105'C**032231XXXX 2
5 07MB1902-105 32268XXXX 07MB1902-105'C**032268XXXX 3
答案 0 :(得分:0)
使用几种解决方案可以更轻松地解决此问题,其中一些解决方案用here表示。因此,这是一个重复的问题。但是,它们不使用data.table
包,因此我将在此处提供使用此包的示例。有关更多信息,请查看其wiki page here。此外,数据的最后一列似乎是逻辑的,应将其更改为数字
library(data.table)
#Change from data.frame to data.table
setDT(data_sample)
#set count to be numeric
data_sample[, Count := as.integer(Count)]
#Change count to be the format needed.
data_sample[, Count := seq(1,.N), by = Prod_No]
答案 1 :(得分:0)
此较小的更改应有助于您获得所需的输出
consoContact2$Count <- as.numeric("")
for (xNo in 1:nrow(consoContact2)){
consoContact2$Count[xNo] <- length(which(consoContact2$Prod_No[1:xNo] == consoContact2[xNo,1]))
}
希望有帮助。