【问题标题】:Getting R Frequency counts for all possible answers获取所有可能答案的 R 频率计数
【发布时间】:2016-04-22 04:05:27
【问题描述】:

我从 R 开始,我仍在寻找语法。 我正在寻找具有 0 到 10 和 NA 值的缩放变量的频率。

Id <- c(1,2,3,4,5)
ClassA <- c(1,NA,3,1,1)
ClassB <- c(2,1,1,3,3)
R <- c(5,5,7,NA,9)
S <- c(3,7,NA,9,5)
df <- data.frame(Id,ClassA,ClassB,R,S)
library(plyr)
count(df,'R')

我得到一个结果

     R freq
  1  5    2
  2  7    1
  3  9    1
  4 NA    1

我正在寻找结果

    R freq
1   0    0
2   1    0
3   2    0
4   3    0
5   4    0
6   5    2
7   6    0
8   7    1
9   8    0
10  9    1
11  10   0
12  NA   1

如果我有显示可能结果的向量

RAnswers <- c(0,1,2,3,4,5,6,7,8,9,10,NA)

我如何将它与数据集一起应用以获得上述结果?

【问题讨论】:

  • 作为对已发布答案的补充,我注意到 countdescription 说:“相当于 as.data.frame(table(x)),但不包括组合计数为零。”

标签: r plyr


【解决方案1】:

这是一个围绕 table()match()replace() 构建的基本 R 解决方案:

freq <- table(df$R,useNA='ifany');
freq;
##
##    5    7    9 <NA>
##    2    1    1    1
R <- c(0:10,NA);
df2 <- data.frame(R=R,freq=freq[match(R,as.integer(names(freq)))]);
df2$freq[is.na(df2$freq)] <- 0;
df2;
##     R freq
## 1   0    0
## 2   1    0
## 3   2    0
## 4   3    0
## 5   4    0
## 6   5    2
## 7   6    0
## 8   7    1
## 9   8    0
## 10  9    1
## 11 10    0
## 12 NA    1

编辑:弗兰克有一个更好的答案,这里是你如何使用table() 来获得所需的输出:

setNames(nm=c('R','freq'),data.frame(table(factor(df$R,levels=RAnswers,exclude=NULL))));
##       R freq
## 1     0    0
## 2     1    0
## 3     2    0
## 4     3    0
## 5     4    0
## 6     5    2
## 7     6    0
## 8     7    1
## 9     8    0
## 10    9    1
## 11   10    0
## 12 <NA>    1

【讨论】:

  • 我认为table(factor(df$R, levels = RAnswers, exclude = NULL)) 有效。 (也许你没有注意到 OP 中的Ranswers?)
  • table(factor(df$R, levels = RAnswers, exclude = NULL)) 给出了没有标签的正确答案。需要添加什么才能获得相同的输出?
【解决方案2】:

使用包 dplyr 可以轻松完成此类任务。为了保留 R 的未使用值,您必须将 R 定义为因子并使用 tidyr 的完整功能

library(dplyr)
library(tidyr)
df %>%
    mutate(R = factor(R, levels=1:10)) %>%
    group_by(R) %>%
    summarise(freq=n()) %>%
    complete(R, fill=list(freq=0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多