如果列d满足条件,我有一个需要在列(a,b,c)上运行的函数。
例如,。
数据帧
A B C D
77.66 5.54 889 1
65.3 4.2 67 1
69.47 0.92 55 2
所以我想在列D == 1
时运行此函数sum_mean <- function (A,C){
sum(A*C)/sum(C)
}
否则
如果列D == 2
,则运行此函数sum_sd <- function (B,C){
sqrt(sum(B^2*C)/sum(C))
}
我如何在r
中实现它感谢您的建议
答案 0 :(得分:3)
你可以尝试
with(df, c(sum_mean(A,C), sum_sd(B,C))[D])
#[1] 76.395341 76.395341 5.310653
或使用ifelse
with(df, ifelse(D==1, sum_mean(A,C),sum_sd(B,C)))
#[1] 76.395341 76.395341 5.310653