假设我有下表:
_ Male Female Total
Pay_with_cash 55 15 70
Use_a_credit_card 60 40 100
Total 115 55 170
如何将此转换为55行的数据集,其中包含使用现金支付的男性,以及使用现金支付的女性的15行等?我希望只有两个变量:性别和付款类型。这可能在R?虽然这不会在此界面中显示为表格,但请设想一个列联表格。
答案 0 :(得分:1)
你可以通过重塑然后dplyr来做到这一点。
library(dplyr)
library(tidyr)
library(magrittr)
your_table =
c(55, 60, 115, 15, 40, 55, 70, 100, 170) %>%
matrix(3) %>%
set_rownames(c("Pay_with_cash",
"Use_a_credit_card",
"Total")) %>%
set_colnames(c("Male", "Female", "Total"))
your_table %>%
as.data.frame %>%
select(-Total) %>%
mutate(payment_type = rownames(.)) %>%
filter(payment_type != "Total") %>%
gather(gender, frequency, Male, Female) %>%
group_by(payment_type, gender) %>%
do(data_frame(ones = rep(1, .$frequency))) %>%
select(-ones)