簡體   English   中英

將分組的數據幀傳遞給dplyr中的自己的函數

[英]pass grouped dataframe to own function in dplyr

我正試圖從plyr轉移到dplyr。 但是,我仍然無法弄清楚如何在鏈式dplyr函數中調用自己的函數。

我有一個帶有分解ID變量和一個訂單變量的數據框。 我想按ID拆分幀,按順序變量排序,並在新列中添加序列。

我的plyr函數看起來像這樣:

f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- ddply(data, .(ID_variable), f)

在dplyr我雖然看起來應該是這樣的

f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- data %>% group_by(ID_variable) %>% f

誰能告訴我如何修改我的dplyr調用以成功傳遞我自己的函數並獲得我的plyr函數提供的相同功能?

編輯:如果我使用這里描述的dplyr公式,它會將對象傳遞給f。 然而,雖然plyr似乎傳遞了許多不同的表(由ID變量分割),但是dplyr不會為每個組傳遞一個表,而是傳遞ENTIRE表(作為某種類型的dplyr對象,其中組被注釋),因此當我cbind時體驗變量它將計數器從0附加到整個表的長度而不是單個組。

我找到了一種方法來使用這種方法在dplyr中獲得相同的功能:

data <- data %>%
    group_by(ID_variable) %>%
    arrange(ID_variable,order_variable) %>% 
    mutate(Experience = 0:(n()-1))

但是,我仍然希望學習如何將分組變量分成不同的表傳遞給dplyr中的函數。

對於那些從谷歌到這里的人。 假設您編寫了自己的打印功能。

printFunction <- function(dat) print(dat)
df <- data.frame(a = 1:6, b = 1:2)

正如在這里被問到的那樣

df %>% 
    group_by(b) %>% 
    printFunction(.)

打印整個數據。 要使dplyr打印多個分組的表,您應該使用do

df %>% 
    group_by(b) %>% 
    do(printFunction(.))

暫無
暫無

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

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