#r #rscript
#r #rscript
Вопрос:
Я хочу перебирать все столбцы во фрейме данных и применять функции к каждому столбцу на основе имени столбца, если имя столбца abc
, то я хочу my.summary()
, чтобы функция выполнялась в этом столбце, а остальные столбцы должны использовать другую функцию
x <- sapply(Data, as.numeric )
x[is.na(x)] <- 0
my.summary <- function(a){
c(
Worst_Decile = quantile(a,0.10),
Worst_Quartile = quantile(a,0.25),
median = median(a),
Best_Quartile = quantile(a,0.75),
Best_Decile = quantile(a,0.90)
)
}
LowIsBetter <- function(a){
c(
Worst_Decile = quantile(a,0.90),
Worst_Quartile = quantile(a,0.75),
median = median(a),
Best_Quartile = quantile(a,0.25),
Best_Decile = quantile(a,0.10)
)
}
for (i in colnames(x)){
if(i == "ABC"){
xy <- apply(x,2,my.summary)
}else{xy <- apply(x,2,LowIsBetter)}
}
Фрейм данных:
Ожидаемый результат :
Комментарии:
1. Можете ли вы поделиться кодом своего фрейма данных и ожидаемым результатом вместо изображения?
Ответ №1:
Попробуйте это :
result <- sapply(colnames(x), function(col) {
if(col == 'abc') my.summary(x[, col])
else LowIsBetter(x[, col])
})