如何传播 table 的名字

How to spread names of a table

如何根据键对名称进行分组,使用 tidyverse 中的 spread 函数是否有效?

    example <- tribble(
  ~key, ~names,
  "t1", "name1",
  "t1", "name2",
  "t2", "name3",
  "t2", "name4",
  "t4", "name5"
)

example %>% spread(key, names)
Error: Duplicate identifiers for rows (1, 2), (3, 4)

desired output

t1  name1,name2
t2  name3,name4
t4  name5

spread 用于 pivoting/reshaping table 并且通常需要三列(id 列、header 列和值列)才能给出有意义的结果;要获得所需的输出,您可以按 key 分组并将 names 汇总到列表中:

example %>% 
    group_by(key) %>% 
    summarise(names = list(names)) %>% 
    as.data.frame()    # for print purpose only

#  key        names
#1  t1 name1, name2
#2  t2 name3, name4
#3  t4        name5

或者 two-way table:

table(example)

#    names
#key  name1 name2 name3 name4 name5
#  t1     1     1     0     0     0
#  t2     0     0     1     1     0
#  t4     0     0     0     0     1