2015-01-12 3 views
-1

Привет, у меня есть функция, которая должна выполняться в столбцах (a, b, c), если столбец d удовлетворяет условию.применить функцию к DF, если столбец удовлетворяет условию

так, например.

dataframe

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)) 
} 

Как я могу добиться этого в г

Спасибо за ваши предложения

ответ

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 
Смежные вопросы