Как я могу написать этот запрос R count? - PullRequest
0 голосов
/ 18 декабря 2018

Для приведенного ниже набора данных я хочу подсчет High, Above Normal, Normal под заданным столбцом

enter image description here

Я хочу вывод, подобный этому

enter image description here

Ответы [ 2 ]

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

С помощью базы R вы можете выполнить следующий код:

#mock up data
my_df <- data.frame(AL_01 = c("Above No", "Normal", "Normal", "High", "Above No", "Normal", "Normal", "High"),
                    AL_02 = c("Above No", "Normal", "Normal", "Normal", "Above No", "Normal", "Normal", "High"),
                    AL_03 =  c("Normal", "Normal", "Normal", "High","Above No", "Normal", "Normal", "High" ))

apply(my_df, 2, table)

yielding:

         AL_01 AL_02 AL_03
Above No     2     2     1
High         2     1     2
Normal       4     5     5

Команда table подсчитывает количество различных записей в векторе.Это вызывается в функции apply.Таким образом, команда table выполняется для каждого столбца (из-за второго аргумента == 2) и возвращается.Введите ?table и ?apply в командной строке, чтобы получить дополнительную информацию.

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

Попробуйте:

Сначала создайте фиктивный набор данных, похожий на ваш:

library(dplyr)
dat <- tibble::tribble(
          ~AL.01,         ~AL.02,         ~AL.03,
  "Above Normal", "Above Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",         "High",
        "Normal",       "Normal",         "High",
        "Normal",       "Normal", "Above Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
  "Above Normal",         "High", "Above Normal",
  "Above Normal",       "Normal", "Above Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "Normal",       "Normal",       "Normal",
        "High",       "Normal",       "Normal"
  )

Теперь выполните следующие операции подсчета и переименования:

AL.01 <- dat %>% 
  count(AL.01) %>% 
  rename(metric = AL.01, AL.01 = n)
AL.02 <- dat %>% 
  count(AL.02) %>% 
  rename(metric = AL.02, AL.02 = n)
AL.03 <- dat %>% 
  count(AL.03) %>% 
  rename(metric = AL.03, AL.03 = n)

final <- full_join(AL.01, AL.02) %>% full_join(AL.03)


final

Data.frame final должен выглядеть следующим образом:

# A tibble: 3 x 4
  metric       AL.01 AL.02 AL.03
  <chr>        <int> <int> <int>
1 Above Normal     3     1     3
2 High             1     1     2
3 Normal          19    21    18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...