“在R中使用'应用'的变化”的扩展

时间:2016-06-10 02:12:17

标签: r categorical-data

我先前在这里提出了问题Using variations of `apply` in R。现在我对这个问题进行了扩展。在我的40个变量中,一些变量是分类的。我需要每种独特品质的观察次数。我想使用某种形式的apply,因为我一直在此代码的各个部分使用sapplytapply,但这不是必需的。这是一些数据:

Age Wt  Ht  Type    Color   Width
79  134 66  C   red small
67  199 64  C   green   small
39  135 78  T   yellow  small
92  149 61  C   yellow  medium
33  138 75  T   green   medium
68  139 71  C   yellow  medium
95  198 62  T   red     large
65  132 65  T   blue    large
56  138 81  C   green   large
71  193 78  T   blue    large

最后两列应该是什么样的

        C    T
 red    1    1
 green  2    1
 blue   0    2
 yellow 2    1
 small  2    1
 medium 2    1
 large  1    3

另外,我知道我可以使用'table',但是如何针对 Type 一次发送多个变量以使其看起来像这样?使用table而不是apply对我来说没问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以在table'颜色'和'宽度'列之后使用unlist并复制'类型'。

Un1 <- unlist(df1[5:6])
Un2 <- df1$Type[row(df1[5:6])]

如果我们需要客户订单,请转换为factor并按相同顺序指定levels

table(factor(Un1, levels = c("red", "green", "blue", "yellow", "small",
                   "medium", "large")), Un2)
#   Un2
#         C T
#  red    1 1
#  green  2 1
#  blue   0 2
#  yellow 2 1
#  small  2 1
#  medium 2 1
#  large  1 3

或者,如果order基于每列中order元素的unique出现

table(factor(Un1, levels = unique(Un1)), Un2)