[英]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.