Надеюсь, я действительно понял, что вы делаете: воссоздание необработанных данных, из которых была создана вышеуказанная таблица.
Таблица выше в R (я не имею дело с числами в скобках в таблице):
tab <- as.data.frame(matrix(c(61, 55, 25, 92, 91, 38), 3, 2))
row.names(tab) <- c('Cerebral infarct', 'Poor outcome', 'Rebleed')
names(tab) <- c('Nimodipine', 'placebo')
Что возвращается в:
> tab
Nimodipine placebo
Cerebral infarct 61 92
Poor outcome 55 91
Rebleed 25 38
Не самое красивое решение, но за ним легко следовать: я взял каждую ячейку таблицы выше и вернул вектор логических значений необходимых переменных n раз, а затем преобразовал в кадр данных:
res <- lapply(names(tab), function(col)
lapply(row.names(tab), function(row)
rep(c(row=='Cerebral infarct', row=='Poor outcome', row=='Rebleed', col=='Nimodipine'), tab[row, col])
))
res <- rapply(res, function(x) x)
res <- as.data.frame(matrix(res, , 4, byrow=T))
names(res) <- c(row.names(tab), names(tab)[1])
Результат:
> str(res)
'data.frame': 362 obs. of 4 variables:
$ Cerebral infarct: logi TRUE TRUE TRUE TRUE TRUE TRUE ...
$ Poor outcome : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ Rebleed : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ Nimodipine : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
PS: фрейм данных содержит 362 случая, как вы можете видеть благодаря:
> sum(tab)
[1] 362
PS: благодаря комментарию @ DWin я только что понял, что не позаботился о возможных совпадениях.