我對 R 很陌生,完全迷路了。
我有一個可以聚合我的資料的函式,但我不知道如何將結果添加到一些新的資料框以及如何回圈輸入以獲取結果?
我的輸入看起來像這樣
input = structure(list(V1 = c("Team_2022", "Team_2022", "Team_2022"), V2 = c("Frank", "Mary", "John"), V3 = c("Sydney", "Sydney", "Sydney"), V4 = c(55, 76, 14)), row.names = c(NA, -3L), class = c("data.table", "data.frame"))
我正在使用的功能是:
result = function(data, combination)
{
purrr::map_df(lapply(combination,function(x){paste(x,collapse = '|')}), function(x){
df = data[grepl(x,data$V2),] %>% group_by(V3) %>% summarize(V1= paste(V1[1]), V2= paste(V2,collapse = ' '), V4= sum(V4))
data = df[,c(2,3,1,4)]
return(data)
}
)
}
如果一次使用這個函式(見下文)然后系結結果,我可以獲得我想要的輸出:
team1 = list(c("Mary","Frank"))
team2 = list(c("Mary", "John"))
output1 = result(input, team1)
output2 = result(input, team2)
output = rbind(output1, output2)
但我寧愿使用回圈或輸入我的函式,如下所示:
teams = structure(list(V1 = c("team1", "team2"), V2 = c("Mary Frank","Mary John")), class = "data.frame", row.names = c(NA, -2L))
并得到相同的結果:
output = structure(list(V1 = c("Team_2022", "Team_2022"), V2 = c("Frank Mary",
"Mary John"), V3 = c("Sydney", "Sydney"), V4 = c(131, 90)), row.names = c(NA,
-2L), class = c("tbl_df", "tbl", "data.frame"))
誰能建議我如何創建一個可以執行此操作的回圈(以及更改輸入變數的結構是否更容易執行此操作)?
uj5u.com熱心網友回復:
你可以試試
apply(teams, 1, function(x) {
y <- list(str_split(x[2], ' \\ ', simplify = T))
res_fun(input, y)
}) %>% do.call("rbind", .)
V1 V2 V3 V4
<chr> <chr> <chr> <dbl>
1 Team_2022 Frank Mary Sydney 131
2 Team_2022 Mary John Sydney 90
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524528.html
標籤:rdplyr咕噜咕噜
