"Using Variations of 'Apply' in R" 的扩展

An Extension of "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 对我来说没问题。

谢谢!

我们可以在 unlisting 'Color' 和 'Width' 列并复制 'Type' 之后使用 table

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 是基于每列中 unique 个元素的 order 外观

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