在函數調用中我有一個複雜的dplyr
結構。輸入是一個數據幀,它可以有一個名爲s
的額外列。如果此欄可用,我想按此欄分組標準分組。 目前,我通過if
語句檢查列是否在數據框中並進行不同的分組來解決它。分組後,我對這兩種數據都有相同的代碼。在dplyr中分組並丟失列
有沒有更好的方法來做到這一點?在我原來的函數中,我在summarise
函數中計算了幾個變量,我不想單獨維護這兩個部分。
這裏是一個例子。
library(dplyr)
df1 <- data.frame(s=rep(c('a','b'), each=10),
p=rep(letters[1:5], 4),
v=runif(20))
df2 <- data.frame(p=rep(letters[1:5], each=4),
v=runif(20))
avgP <- function(df) {
if('s' %in% names(df)) {
df %>%
group_by(s, p) %>%
summarise(avg=mean(v))
} else {
df %>%
group_by(p) %>%
summarise(avg=mean(v))
}
}
avgP(df1)
avgP(df2)
我首選的方案會是這樣group_by
只是僅由p
忽略丟失的列和意志集團當我df2
工作。
是變量設置在每個數據一樣嗎? (當然除了's')?也許使用SE – Sotos
SE是什麼意思?是的,他們基本上是一樣的。 – drmariod
[看看這個鏈接](https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html)。另外@ akrun的答案使用SE – Sotos