我确信答案就在眼前,所以请耐心听我说,但是我如何构建一个for循环来遍历一个 Dataframe ,为所有可能的迭代创建双向列联表?
示例 Dataframe :
amazon <- c(0,1,0,1,1)
age <- c(1,2,4,3,0)
income <- c(1,1,1,0,0)
delivery <- c(1,2,0,3,4)
manhattan <- c("Manhattan", "Other", "Manhattan", "Other", "Manhattan")
df <- data.frame(cbind(amazon, age, income, delivery, manhattan))
df <- df %>% mutate(across(everything(), as.factor))
因此,所有列都是分类为因子的分类/二元变量
我试过了
results <- data.frame()
for(i in 1:(ncol(df))){
for(j in (i+1):ncol(df)){
table <- table(df[,i], df[,j], useNA = "ifany")
results <- rbind(results,ftable(round(prop.table(table),3)))
}
}
我也试过这个:
make_p_tab <- function(x) {
col_df <- df %>% dplyr::select(var1, all_of(x)) %>% filter(!is.na(x)) %>%
table() %>% prop.table(.,1)
}
to_do <- function(df){
colnames(df)
}
food_xtab <- map(to_do, make_p_tab)
我希望有多个列联表,这样输出的结果就像是我一个接一个地写出了每个列联表一样。
table(df$amazon, df$age)
table(df$amazon, df$income)
table(df$amazon, df$manhattan)...
table(df$delivery, df$manhattan)
谢谢!
1条答案
按热度按时间guicsvcw1#
直接使用
combn
: