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)任何套餐都可以.
我必须盲目地把它给你,但这应该有效或接近:
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 ,这要复杂得多!:)