Имеет следующий df data.frame
в R:
вызов df:
Id1 Id2 var1 var2
A CODE_1 9625 0.110
A CODE_1 10625 0.210
A CODE_2 3441 0.0604
A CODE_2 22372 0.237
A CODE_3 4611 0.0792
A CODE_3 2859 0.0530
B CODE_1 2295 0.0308
B CODE_1 4398 0.0474
B CODE_2 2464 0.0353
B CODE_2 342 0.0596
B CODE_3 2600 0.229
B CODE_3 429 0.0762
Как я могу применить следующую функцию:
myfun<- function(x,y,z,w){
output <- list()
output$den <- (x-z)/sqrt(((x*(1-x))/y)+((z*(1-z))/w))
return(output)
}
иполучить наконец:
Id1 Id2 var1 var2 Val
A CODE_1 9625 0.27 -16.1
A CODE_1 8625 0.19 -16.1
A CODE_2 3441 0.0604 -35.6
A CODE_2 22372 0.237 -35.6
A CODE_3 4611 0.0792 4.5
A CODE_3 2859 0.0530 4.5
B CODE_1 2295 0.0308 -3.440912
B CODE_1 4398 0.0474 -3.440912
B CODE_2 2464 0.0353 -1.82
B CODE_2 342 0.0596 -1.82
B CODE_3 2600 0.229 10.3
B CODE_3 429 0.0762 10.3
Код, по сути, принимает Id2 и Id2, как в следующем ручном процессе:
A CODE_1 9625 0.27
A CODE_1 8625 0.19
и применяет функцию, сохраняя результат в столбце в соответствующем порядке,как показано в примере.
myfun(0.110,9625,0.19,8625)$den
A CODE_1 9625 0.27 -16.1
A CODE_1 8625 0.19 -16.1
В момент я пробую некоторые методы, такие как:
df %>% group_by(Id1, Id2)%>%select(var1, Var2)%>% xxxxxxx
Я чувствую, что xxxxxxx
- это в основном одна простая строка, но я потерян ..