Вместо того, чтобы сразу переходить к коду-ответу, я хотел бы предложить несколько (незапрошенных) советов относительно форматирования данных:
Мне кажется, что вы могли бы извлечь большую выгоду из наличиядлинный стол вместо того, который у вас есть (у вас может быть много других типов рака, таких как "Cancer_n"; и много других болезней, таких как "AIDS_N").Для того, чтобы иметь длинную таблицу, вам может потребоваться определить какой-то идентификатор для каждой записи.Также для полноты результатов я бы хотел предложить решение data.table
:
require(data.table) # loads the package
a <- data.table(id = 1:3,
Cancer1 = c(1,0,1),
Cancer2 = c(0,1,0),
Cancer3 = c(1, 0,0),
Disease1 = c(1,0,1)) # create a data.table with an additional id
# melt the data.table (make it long-form), and calculate the expected result:
melt(a, c("Disease1", "id"))[Disease1 == 1 & value == 1, .N, by = variable]
variable N
1: Cancer1 2
2: Cancer3 1