在各行之间计数并汇总

zin*_*eda 2 r dplyr

我有一个数据集,如下所示:

data <- tribble(
  ~top_1, ~top_2, ~top_3,
  "A",     "B",    "C",
  "B",     "B",    "B",   
  "C",     "B",    "C",
  "A",     "B",    "B",
  "A",     "A",    "A",
  "B",     "B",    "A",
  "C",     "A",    "C",
  "A",     "A",    "A",
  "A",     "C",    "B",
  "B",     "B",    "C",
)
Run Code Online (Sandbox Code Playgroud)

现在,我想为每一列计数不同的行,并有一个新的数据集,如下所示:

new_data <- tribble(
  ~product, ~top_1, ~top_2, ~top_3,
     "A",    .50,    .30,     .30,
     "B",    .30,    .60,     .30,
     "C",    .20,    .10,     .40,
)
Run Code Online (Sandbox Code Playgroud)

您能帮我创建此数据吗?

d.b*_*d.b 5

lvl = unique(unlist(data))
sapply(data, function(x) prop.table(table(factor(x, lvl))))
#  top_1 top_2 top_3
#A   0.5   0.3   0.3
#B   0.3   0.6   0.3
#C   0.2   0.1   0.4
Run Code Online (Sandbox Code Playgroud)