传染媒介的元素对数据框架的不同的专栏

kkj*_*joe 5 r vector dataframe tidyverse

我有一个df:

   group number id
1      A   abcd  1
2      A   abcd  2
3      A   abcd  3
4      A   efgh  4
5      A   efgh  5
6      B   abcd  1
7      B   abcd  2
8      B   abcd  3
9      B   abcd  9
10     B   ijkl 10
Run Code Online (Sandbox Code Playgroud)

我想这样做:

   group number  data1 data2 data3 data4           Length
1      A   abcd      1     2     3                      3
2      A   efgh      4     5                            2
3      B   abcd      1     2     3     9                4
4      B   ijkl      10                                 1
Run Code Online (Sandbox Code Playgroud)

对不起,我只能这样做到df2:

   group number     data               Length
1      A   abcd  c(1,2,3)                   3
2      A   efgh  c(4,5)                     2
3      B   abcd  c(1,2,3,9)                 4
4      B   ijkl  10                         1
Run Code Online (Sandbox Code Playgroud)

我的代码在这里:

library(tidyverse)

df <- data.frame (group = c(rep('A',5),rep("B",5)),
                  number = c(rep('abcd',3),rep('efgh',2),rep('abcd',4),rep('ijkl',1)),
                  id = c(1,2,3,4,5,1,2,3,9,10))

df2 <- df %>%
  group_by(group,number) %>%
  nest() %>%
  mutate(data=map(data,~unlist(.x, recursive = TRUE, use.names = FALSE))?
         Length= map(data, ~length(.x)))
Run Code Online (Sandbox Code Playgroud)

请随意开始使用df或df2,(out)任何套餐都可以.

Moo*_*per 3

我必须盲目地把它给你,但这应该有效或接近:

library(tidyverse)
df %>%
    group_by(group,number) %>%
    mutate(key = paste0("data",row_number()),length = n()) %>%
    ungroup %>%
    spread(key,id,"")
Run Code Online (Sandbox Code Playgroud)

为了使其能够从嵌套数据中工作,我认为您必须将这些向量更改为具有相同 col 编号和名称的 1 行 data.frames ,然后使用 unnest ,这要复杂得多!:)