2014-02-07 2 views
0

Рассмотрим следующие векторы символов:Создание сводной таблицы в R

M1 = c("Variable_1", "Variable_2", "Variable_3") 
M2 = c("Variable_2", "Variable_4", "Variable_5") 
M3 = "Variable_3" 
M4 = c("Variable_1", "Variable_2", "Variable_3", "Variable_4", "Variable_5") 

мне было интересно, если есть какой-либо инструмент/функция R, что позволяет мне генерировать следующую таблицу на основе значений М1, М2, М3 и M4, а затем участок таблица:

enter image description here

Любая помощь будет оценена по достоинству! Благодаря!

ответ

2

Эта команда создает таблицу с нулями и единицами.

table(do.call(rbind, lapply(c("M1", "M2", "M3", "M4"), function(x) 
    data.frame(ind = x, var = get(x))))) 

    var 
ind Variable_1 Variable_2 Variable_3 Variable_4 Variable_5 
    M1   1   1   1   0   0 
    M2   0   1   0   1   1 
    M3   0   0   1   0   0 
    M4   1   1   1   1   1 

Если вы действительно хотите иметь x s вы можете использовать:

tab <- table(do.call(rbind, lapply(c("M1", "M2", "M3", "M4"), function(x) 
    data.frame(ind = x, var = get(x))))) 

replace(replace(tab, as.logical(tab), "x"), !tab, "") 

    var 
ind Variable_1 Variable_2 Variable_3 Variable_4 Variable_5 
    M1 x   x   x        
    M2   x      x   x   
    M3      x        
    M4 x   x   x   x   x 

Основываясь на ваш комментарий. Как избавиться от var и ind и как использовать список:

LL <- list(M1, M2, M3, M4) 

tab <- table(do.call(rbind, lapply(seq_along(LL), function(x) 
    data.frame(ind = x, var = LL[[x]])))) 

dimnames(tab) <- unname(dimnames(tab)) 

replace(replace(tab, as.logical(tab), "x"), !tab, "") 

    Variable_1 Variable_2 Variable_3 Variable_4 Variable_5 
1 x   x   x        
2   x      x   x   
3      x        
4 x   x   x   x   x   
+0

Спасибо Sven. К сожалению, я больше искал «х» или галочку. – Mayou

+0

@Mariam См. Обновление. –

+0

Спасибо Свену, это прекрасно! Малый вопрос о последующих действиях: что, если мои векторы M1-M4 были фактически элементами списка (т. Е. Список [[1]] - это M1, список [[2]] - M2, ...). Как я могу использовать метод 'table()'? – Mayou

Смежные вопросы