我先前在这里提出了问题Using variations of `apply` in R。现在我对这个问题进行了扩展。在我的40个变量中,一些变量是分类的。我需要每种独特品质的观察次数。我想使用某种形式的apply
,因为我一直在此代码的各个部分使用sapply
和tapply
,但这不是必需的。这是一些数据:
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
对我来说没问题。
谢谢!
答案 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)