Как повторить вычисление для каждого столбца? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть набор данных, который выглядит следующим образом:

V1 V2 V3 ...
1  1  2 ...
1  1  2 ...
2  3  NA...
NA 2  1 ...
2  1  3 ...

он содержит 2535 столбцов, и я хочу использовать следующий индекс для всех столбцов.Мне удалось вычислить индекс для первого столбца.

 ((max(table(df$V1)))-0.5*
             ((table(df$V1)["1"]+table(df$V1)["2"]+table(df$V1)["3"])
              - (max(table(df$V1)))))/(table(df$V1)["1"]+table(df$V1)["2"]+table(df$V1)["3"])

Есть ли способ, как вычислить индекс для каждых 2535 столбцов?Я думал об использовании цикла, но не смог написать один ...

1 Ответ

0 голосов
/ 19 декабря 2018

Вы должны взглянуть на dplyr пакета tidyverse, в частности mutate_at или mutate_if.

Какова ваша функция?то есть, какую операцию вы хотите выполнить для каждого столбца?

Если вы хотите сделать это для ВСЕХ числовых столбцов в данных:

library(tidyverse)
mutate_if(data, is.numeric, your_function)


data = data.frame(V1 = sample(1:5, 10, replace = T),
    V2 = sample(1:5, 10, replace = T),
    V3 = sample(1:5, 10, replace = T))

mutate_if(data, is.numeric, mean) %>% unique()

       V1  V2  V3
    1 2.9 2.4 2.7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...