簡體   English   中英

如何對group_by的結果應用自定義函數

[英]How to apply self-defined function on the result of group_by

我想按某列對數據進行分組,然后用最近的觀察結果替換NA。 有什么方法可以將聚合函數以外的函數應用於group_by的結果?

這是用ddply實現的兩個示例:

1:

dt<-data.table(A=rep(c(1:3),2), B=c(1,2,NA,NA,2,5),C=c(9,NA,2,8,NA,4)
ddply(dt,"A",function(x){na.locf(x, na.rm = FALSE,fromLast=FALSE)})

2:

ddply(dt,"A",function(x){
 if (x[1,"A"]>2){
  x[,2:3]*1
 } else {
  x[,2:3]*(-1)
}

})

我不知道如何用groug_by復制它,它應該比ddply更快。 順便說一句,是否有任何NA替換功能都比na.locf更快?

提前謝謝了。

使用dplyr

dt %>%
   group_by(A) %>%
   mutate_each(funs(na.locf(., na.rm = FALSE, fromLast = FALSE)))

但是,如果您已經在使用data.table ,為什么不直接使用它呢?

dt[, lapply(.SD, na.locf, na.rm = FALSE, fromLast = FALSE), by = A]

您也可以像下面這樣使用:=運算符通過引用來更新數據表

dt[, names(dt)[-1] := lapply(.SD, na.locf, na.rm = FALSE, fromLast = FALSE), A]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM