如何计算一个接一个的值出现的次数

cla*_*ake 6 r

我是R的新手,但是我需要用它来找出一个值接一个出现多少次.基本上,我有5个数字(0,1,2,3,4)以随机顺序列出38次.我需要找出0值多少次0后发生,1 0后发生,2 0后......依此类推,直到我达到4 4.后发生是否有任何命令来做到这一点?

真的很感激帮助!

G. *_*eck 11

创建对的数据框,然后使用table:

z <- c(0, 1, 2, 3, 4, 0, 1, 2, 3, 4)
pairs <- data.frame(first = head(z, -1), second = tail(z, -1))
table(pairs)
Run Code Online (Sandbox Code Playgroud)

赠送:

     second
first 0 1 2 3 4
    0 0 2 0 0 0
    1 0 0 2 0 0
    2 0 0 0 2 0
    3 0 0 0 0 2
    4 1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

或者这给出了原始pairs数据框和一Freq列计数:

as.data.frame(table(pairs))
Run Code Online (Sandbox Code Playgroud)


koh*_*ske 10

可能这个命令做到了:

library(plyr) # if absent, type > install.packages('plyr')
z <- sample(0:4, 38, T) # data
count(data.frame(embed(rev(z),2))) # do it
Run Code Online (Sandbox Code Playgroud)

  • 你也可以用`table(data.frame(...))`来获得矩阵形式的结果.请注意,`plyr :: count`不包括零计数的对. (3认同)
  • 如果你需要零计数,那么data.frame(table(data.frame(embed(rev(z),2))))会做到......丑陋......,如果你需要无限数量的其他组合,Haskell可能会这样做;) (2认同)