2017-10-17 47 views
1

對不起,如果存在此問題。說我有一個載體計算每個位置出現的次數

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

我想在每個位置來計算每個唯一值的數量,以便我能得到像

c(1, 2, 1, 1, 1, 3, 4, 2, 2, 2) 

結果是否有一個快速的方法來做到這一點R中?

回答

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

你可以這樣做:

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