Переход с SAS на R - Как эффективно повторить ту же задачу в R - PullRequest
2 голосов
/ 17 июня 2020

У меня есть 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 переменных и либо сложить, либо cbind информацию не создавая слишком много NA. Я использую rbind.fill, но создание фрейма данных беспорядочное и имеет много NA.

Заранее благодарю за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...