我有 24 个变量,我需要在与其他变量结合时获得频率。在 SAS 中,它将是一个简单的宏:
%macro results (house_color,variable);
proc freq data = all_houses;
table variable*majority_&house_color. / missing out= &varibale._by_&house_color.;
run;
% mend;
%results( house_color = purple, variable=pool_or_no_pool) ;
%results (house_color = blue, variable = upb);
我尝试使用我之前问过的另一个问题中提供的代码在 R 中创建一个函数:
results <- function(x,y,d,z){
freqs <- freqlist(table(z[c(x,y)],useNA = "always"))
freq_df <- as.data.frame(freqs) %>% select(1:3)
colnames(freq_df)[3] <- d
freq_df
}
其中 x 是第一个变量,y 是第二个变量,d 是我希望将 Freq 列重命名为的值,z 是数据集。但是,当我从函数获得结果并尝试使用 cbind 合并所有信息时,它给了我以下错误:
data.frame(..., check.names = FALSE) 中的错误:参数暗示不同的行数:10、11
我想知道是否有任何更简单的方法来获取这 24 个变量的频率表,并在不创建太多 NA 的情况下堆叠或 cbind 信息。我用过rbind.fill,但是数据框产生的东西很乱,而且有很多 NA。
预先感谢您的帮助。