R 通过将两列分组并将其保存到新列中来应用函数
在R中具有以下dfR 通过将两列分组并将其保存到新列中来应用函数,r,dataframe,dplyr,R,Dataframe,Dplyr,在R中具有以下dfdata.frame: 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
data.frame
:
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)
}
代码基本上采用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的
xxxxxxx
基本上是一行简单的代码,但是我丢失了。我们可以修改函数
uni_prop.test <- function(x,y,z,w){
(x-z)/sqrt(((x*(1-x))/y)+((z*(1-z))/w))
}
检查“var1”和“var2”的输入和输出数据集值。似乎有些不同
uni_prop.test <- function(x,y,z,w){
(x-z)/sqrt(((x*(1-x))/y)+((z*(1-z))/w))
}
library(dplyr)
df %>%
group_by(Ti, Exp) %>%
mutate(var3 = uni_prop.test(first(var2), first(var1), last(var2), last(var1)))