Я бы хотел создать таблицу частот, например, в R:
df = data.frame(aa = c(9,8,7,8), bb = c(9,7,9,8), cc = c(7,9,8,7))
apply(df, 2, table)
# outputs:
# aa bb cc
# 7 1 1 2
# 8 2 1 1
# 9 1 2 1
Но, если один из столбцов df
будет иметь счетчик 0 (например, если мы изменим вышеприведенноетак что df$cc
не имеет 9
) вместо красивого фрейма данных мы получим список.
# example that gives a list
df = data.frame(aa = c(9,8,7,8), bb = c(9,7,9,8), cc = c(7,8,8,7))
apply(df, 2, table)
Какой простой способ сделать нечто подобное, что гарантирует вывод фрейма данных независимо от количества?
Я могу представить несколько решений, которые кажутся грязными или взломанными, например, это дает желаемый результат:
# example of a messy but correct solution
df = data.frame(aa = c(9,8,7,8), bb = c(9,7,9,8), cc = c(7,8,8,7))
apply(df, 2, function(x) summary(factor(x, levels = unique(unlist(df)))))
Есть ли более чистый способ сделать это?