我有2個資料框:
df <- data.frame (model = c("A","A","A","B","B","B"),
category = c("z3","f4","c5","d3","g6","B6"),
sale = c(1001,1050,-300,-150,-25,960))
df2 <- data.frame (model = c("A","B","A","B","A","B","A"),
category = c("z3","f4","c5","d3","g6","B6","z3"))
我在哪里做一些計算:
#summerise by category and model
df.agg <-df %>%
group_by(category ,model) %>%
summarise(sale = sum(sale))
#Drop duplicated rows
df.clean <- df2[!duplicated(df2$category), ]
#merge 2 dataframe
df.merge <- merge(x = df.agg, y = df.clean, by = "category", all.x = TRUE)
但是,當我嘗試創建一個函式并將變數“類別”指定為引數時,它不起作用:
converte <- function(x,y,z) {
#summerise by category and model
df.agg <-x %>%
group_by(z, model) %>%
summarise(sale = sum(sale))
#Drop duplicated rows
df.clean <- y[!duplicated(y$z), ]
#merge 2 dataframe
df.merge <- merge(x = df.agg, y = df.clean, by = z, all.x = TRUE)
}
data.wto.agg <- converte(df,df2, category)
uj5u.com熱心網友回復:
幾處改變,
converte <- function(x,y,z) {
#summerise by category and model
df.agg <-x %>%
group_by(across(c({{z}}, model))) %>%
summarise(sale = sum(sale))
#Drop duplicated rows
df.clean <- y[!duplicated(y[[z]]), ]
#merge 2 dataframe
df.merge <- merge(x = df.agg, y = df.clean, by = z, all.x = TRUE)
return(df.merge)
}
converte(df, df2, 'category')
`summarise()` has grouped output by 'category'. You can override using the `.groups` argument.
category model.x sale model.y
1 B6 B 960 B
2 c5 A -300 A
3 d3 B -150 B
4 f4 A 1050 B
5 g6 B -25 A
6 z3 A 1001 A
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480409.html
上一篇:Dplyr:如何在R中顯示匯總統計資訊的資料透視表中按類別組重新排列和拆分資料框
下一篇:計算復雜字串的出現次數
