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