计算每个位置的出现次数

时间:2017-10-17 20:56:01

标签: r

很抱歉,如果这个问题存在。说我有一个向量

value <- c("A", "A", "B", "C", "D", "A", "A", "B", "C", "D")

我想计算每个位置的每个唯一值的数量,这样我就可以得到像

这样的结果
c(1, 2, 1, 1, 1, 3, 4, 2, 2, 2)

在R中有快速的方法吗?

3 个答案:

答案 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