如果列满足条件,则将函数应用于DF

时间:2015-01-12 13:10:41

标签: r

如果列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

中实现它

感谢您的建议

1 个答案:

答案 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