A.categ <- cut(A, breaks = c(-Inf, 10, 20, 30, Inf), right=FALSE)
B.categ <- cut(B, breaks = c(-Inf, 1, 10, 100, Inf), right=FALSE)
table(A.categ, B.categ)
诀窍与cut
被记住要设置正确= FALSE,因为这是大多数人期望它的工作方式。事实上,当Frank Harrell为Hmisc制作他的版本cut2
时,他将其设置为默认选项。
当你做到这一点与汤米cosntructed的例子你
> A.categ <- cut(d$A, breaks = c(-Inf, 10, 20, 30, Inf), right=FALSE)
> B.categ <- cut(d$B, breaks = c(-Inf, 1, 10, 100, Inf), right=FALSE)
> table(A.categ, B.categ)
B.categ
A.categ [-Inf,1) [1,10) [10,100) [100, Inf)
[-Inf,10) 0 1 1 9
[10,20) 0 2 3 2
[20,30) 0 5 4 1
[30, Inf) 0 17 11 44
不是每个理解打开/关闭惯例所以有时你需要去和返工您构建了一个因子分解变量的labels
cut
因此,那些数学上较不重要的客户可以将其映射到他的约定。您可以使用factor
功能并指定labels
参数(和不指定levels
参数,否则您将“打破变量”)
> A.categ <- factor(A.categ, labels=c(" Less than 1", "1-9.9", "10-99.9" , "100+"))
> table(A.categ, B.categ)
B.categ
A.categ [-Inf,1) [1,10) [10,100) [100, Inf)
Less than 1 0 1 1 9
1-9.9 0 2 3 2
10-99.9 0 5 4 1
100+ 0 17 11 44
@downvoter:如果你downvote,你应该提供一个原因。这个问题是R中与“重新编码”变量有关的常见和完全有效的问题。 –
@ user873096:我编辑了您的问题以更好地格式化表格。您只需标记代码和/或打印输出并按下“{}”按钮。 – Tommy