很抱歉,如果这个问题存在。说我有一个向量
value <- c("A", "A", "B", "C", "D", "A", "A", "B", "C", "D")
我想计算每个位置的每个唯一值的数量,这样我就可以得到像
这样的结果c(1, 2, 1, 1, 1, 3, 4, 2, 2, 2)
在R中有快速的方法吗?
答案 0 :(得分:6)
在基地R:
ave(value, value, FUN = seq_along)
给出:
[1] "1" "2" "1" "1" "1" "3" "4" "2" "2" "2"
如果你想得到一个数字向量:
ave(seq_along(value), value, FUN = seq_along)
答案 1 :(得分:1)
你可以这样做:
result <- rep(NA,length(value))
for(i in unique(value)){
value_ind <- which(value == i)
result[value_ind] <- 1:length(value_ind)
}
result
[1] 1 2 1 1 1 3 4 2 2 2
答案 2 :(得分:0)
来自dplyr
的解决方案。
library(dplyr)
dt <- data_frame(value)
dt2 <- dt %>%
mutate(Count = 1) %>%
group_by(value) %>%
mutate(Count = cumsum(Count))
dt2$Count
[1] 1 2 1 1 1 3 4 2 2 2