追加频率表-缺少值 [英] Appending Frequency Tables - With Missing Values

查看:60
本文介绍了追加频率表-缺少值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目标是产生一个我所有选择的变量的频率表(关于4种报纸的阅读习惯),这些变量在本质上具有相同的可能值:

The goal is to produce a frequency table of all my selected variables (about reading habits for 4 Newspapers) which in essence have the same possible values:

1= Subscribed
2= Every week
3= Sometimes
4= Never
0= NA (No Answers)

如果其中一个变量不包含可能的值之一,则会出现问题.例如,如果没有人订阅该特定报纸.

The problem arises if one of the variables does not contain one of the possible value. For example, if no one is subscribed to that particular Newspaper.

   a <- c(1,2,3,4,3,1,2,3,4,3)
   b <- c(2,2,3,4,3,0,0,3,4,1)
   d <- c(2,2,3,4,3,0,0,0,0,0)
   e <- c(3,3,3,3,3,3,3,3,3,3)

    ta <- table(a)
    tb <- table(b)
    td <- table(d)
    te <- table(e)
    abde <- cbind(ta,tb,td,te) 

  ta tb td te
0  2  2  5 10
1  2  1  2 10
2  4  2  2 10
3  2  3  1 10
4  2  2  5 10

零频率替换为最后一个值的副本.

Zero Frequencies are replaced by a duplicate of the last value.

如何更好地实现这一目标?

How can this be acheived in a better way?

推荐答案

我认为您正在寻找factor:

> L <- list(a, b, d, e)
> A <- sort(unique(unlist(L, use.names = FALSE)))
> sapply(L, function(x) table(factor(x, A)))
  [,1] [,2] [,3] [,4]
0    0    2    5    0
1    2    1    0    0
2    2    2    2    0
3    4    3    2   10
4    2    2    1    0


更新

这是基于R的一种方法,甚至可能更直接:


Update

Here's an approach in base R that might even be more direct:

> L <- mget(c("a", "b", "d", "e"))
> table(stack(L))
      ind
values  a  b  d  e
     0  0  2  5  0
     1  2  1  0  0
     2  2  2  2  0
     3  4  3  2 10
     4  2  2  1  0

这篇关于追加频率表-缺少值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆