如何编写此R计数查询?

时间:2018-12-18 16:08:37

标签: r

对于下面的数据集,我希望在给定列下计数高,正常以上,正常

enter image description here

我想要这样的输出

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试一下:

首先创建一个类似于您的虚拟数据集:

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

答案 1 :(得分:1)

使用基数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)

收益:

         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,以获取更多信息。