计算r中某个值的出现次数

Use*_*268 1 r vector count repeat

假设我们有一个向量a <- c(1,2,3,4,1,5,6,1,7),我想要一个函数来返回每个值的重复次数.我想得到的结果是c(1,1,1,1,2,1,1,3,1)- 因为数字1重复了3次.

第二个问题 - 如何获得一个可以返回c(1,0,0,0,2,0,0,3,0)上述值的函数?所以它只计算重复的元素而其他所有元素都会得到0?

谢谢!

Psi*_*dom 5

你可以使用ave功能:

ave(rep(1, length(a)), a, FUN=cumsum)
# [1] 1 1 1 1 2 1 1 3 1
Run Code Online (Sandbox Code Playgroud)

关注@ lmo的评论,第二部分:

alldups <- duplicated(a) | duplicated(a, fromLast = TRUE)
res <- ave(rep(1, length(a)), a, FUN=cumsum)
res[!alldups] <- 0
# [1] 1 0 0 0 2 0 0 3 0
Run Code Online (Sandbox Code Playgroud)