如何在dplyr中引用组中的行数?

时间:2016-02-22 01:44:30

标签: r dplyr

我正在尝试编写一个与dplyr一起使用的函数,该函数使用组中的行数。除了创建新列之外,有没有办法在dplyr中引用组中的行数?这相当于.N中的data.table变量。

以下是我正在尝试做的一个例子:

library(dplyr)
library(RcppRoll)

# Function I'm trying to create
rollingMean <- function(x, n = 4) 
  if (.N < n) {  # I want to test whether we have more than 4 rows
    out <- mean(x)  # if so, return the overall mean
  } else {
    out <- roll_meanr(x, n)
  }
  return(out)
  }

# Fake data
tmp <- data.frame(X = 1:21, grouping = c(rep(letters[1:2], 10), letters[3]))

tmp %>%
  group_by(grouping) %>%
  mutate(ma = rollingMean(X)) %>%
  tail  # Of course, this doesn't work, but the value for ma for the last row should be 21

这似乎很简单。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

我认为rollingMean中的测试只需要

if (length(x) < n)

?n中有dplyr个功能,但它很特别 -

  

...只能在'summary','mutate'和'filter'......

中使用