我正在尝试编写一个与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
这似乎很简单。有谁知道怎么做?
答案 0 :(得分:1)
我认为rollingMean
中的测试只需要
if (length(x) < n)
?n
中有dplyr
个功能,但它很特别 -
...只能在'summary','mutate'和'filter'......
中使用