拆分应用结合dplyr do和函数

拆分应用结合dplyr do和函数,r,dplyr,split-apply-combine,R,Dplyr,Split Apply Combine,我有一个数据帧,通过分组进行拆分,然后使用do()在每个分组部分上运行一个函数。我遇到的问题是,函数中有一个变量需要根据每个不同的组进行更改。我该怎么解释呢 数据按地区和联盟分组 Account Region League Owner Value Acc1 East Major Sally 1536 Acc2 East Minor Jeff 2200 Acc3 East Minor Larry 3320 Acc4 We

我有一个数据帧,通过分组进行拆分,然后使用do()在每个分组部分上运行一个函数。我遇到的问题是,函数中有一个变量需要根据每个不同的组进行更改。我该怎么解释呢

数据按地区和联盟分组

Account  Region  League  Owner  Value
Acc1     East    Major   Sally  1536
Acc2     East    Minor   Jeff   2200
Acc3     East    Minor   Larry  3320
Acc4     West    Major   Harry  4000
Acc5     West    Major   Harry  900
Acc6     West    Minor   Jess   700

East Major
East Minor
West Major
West Minor ... etc
这是我将传递给数据的每个分组版本的函数的一部分

reAssign <- function(dta) {
  other_acct <- dta %>% 
    group_by(Owner) %>% 
    mutate(NewOwner = replace(Owner, cumsum(AccValue) > 600000 | row_number() > 14, NA)) %>% 
    ungroup(Owner) %>%
    mutate(Owner = NewOwner) %>%
    select(-r, -NewOwner)
我怎样才能更改密码

mutate(NewOwner=replace(Owner,cumsum(AccValue)>600000 |行数()>14,NA))%%>%

将来

mutate(NewOwner=replace(Owner,cumsum(AccValue)>MaxValue | row_number()>MaxCount,NA))%>%


并将正确的列表传递给每个MaxValue和MaxCount变量?

如果您想继续使用可管道代码,可以考虑将
dplyr::do
替换为
purrr:map
,尤其是
purrr::pmap()
这将允许您将多个列表作为参数传递到函数中。如果没有,您可以使用
mapply
方法。我会将您的第二个df加入到第一个df中,然后您可以直接使用
MaxValue
RegionLeague  MaxValue   MaxCount
East Major    600000     14
East Minor    450000     10
West Major    800000     20
West Minor    220000     12