Ответ Дирка - путь, но на данных ОП простое apply(foo,2,table)
не сработает - вам нужно иметь дело с 0, возможно, так:
my.data <- "online offline
1 sehrwichtig wichtig
2 wichtig unwichtig
3 sehrwichtig unwichtig
4 sehrwichtig sehrwichtig
5 sehrwichtig sehrwichtig
6 sehrwichtig unwichtig
7 sehrwichtig unwichtig
8 wichtig wichtig
9 wichtig unwichtig
10 sehrwichtig sehrwichtig
11 sehrwichtig wichtig
12 sehrwichtig unwichtig
13 wichtig sehrwichtig
14 sehrwichtig wichtig"
df <- read.table(textConnection(my.data))
df.labels <- unique(as.character(apply(df,2,as.character)))
tallies <- apply(df,2,function(x)table(x)[df.labels])
tallies[is.na(tallies)] <- 0
rownames(tallies) <- df.labels
Для краткости, вы можете объединить последние 3 строки:
tallies <- apply(df,2,function(x){y <- table(x)[df.labels];
names(y) <- df.labels; y[is.na(y)] <- 0; y})
Вывод:
> tallies
online offline
sehrwichtig 10 4
wichtig 4 4
unwichtig 0 6