您可以使用ftable()
與prop.table()
。指定row.vars
作爲第二列將產生一個看起來像你想要的表格的表格(順序略有不同)。
prop.table(ftable(df, row.vars = 2), margin = 1)
# Success 0 1
# Level High Low Med High Low Med
# Gender
# F 0.50 0.00 0.00 0.00 0.00 0.50
# M 0.00 0.25 0.25 0.25 0.25 0.00
對於確切需要的表,您可以重構列以更改級別的順序。
df2 <- transform(
df,
Level = factor(Level, levels = c("High", "Med", "Low")),
Success = factor(Success, levels = 1:0)
)
prop.table(ftable(df2, row.vars = 2), margin = 1)
# Success 1 0
# Level High Med Low High Med Low
# Gender
# F 0.00 0.50 0.00 0.50 0.00 0.00
# M 0.25 0.00 0.25 0.00 0.25 0.25
數據:
df <- structure(list(Success = c(1L, 1L, 1L, 0L, 0L, 0L), Gender = structure(c(2L,
2L, 1L, 2L, 2L, 1L), .Label = c("F", "M"), class = "factor"),
Level = structure(c(1L, 2L, 3L, 2L, 3L, 1L), .Label = c("High",
"Low", "Med"), class = "factor")), .Names = c("Success",
"Gender", "Level"), class = "data.frame", row.names = c(NA, -6L
))
感謝。這十分完美!我仍然更喜歡使用'with()'函數的第一個版本。雖然看起來有點不同,但它給了我選擇變量名稱的控制權。考慮到我正在處理更大的數據集,它會很方便。謝謝! –
謝謝你所有的詳細解答。 –
當然大衛,高興地幫助:) –