数据矩形化?-如何基于唯一标识符将多行数据重新整形/折叠为R中的一个单元格?
我希望获取多行数据,并将它们折叠到每个唯一标识符的一个单元格中。我正在处理一个相当混乱、大小合适的数据帧,但下面是一个非常简单的示例,说明我正在努力实现的目标:数据矩形化?-如何基于唯一标识符将多行数据重新整形/折叠为R中的一个单元格?,r,reshape,tidyr,R,Reshape,Tidyr,我希望获取多行数据,并将它们折叠到每个唯一标识符的一个单元格中。我正在处理一个相当混乱、大小合适的数据帧,但下面是一个非常简单的示例,说明我正在努力实现的目标: mydf = data_frame(x=c(rep("A",3),rep("B",3),rep("C",3)), y=letters[1:9]) mydf # A tibble: 9 x 2 x y <chr> <chr> 1 A a
mydf = data_frame(x=c(rep("A",3),rep("B",3),rep("C",3)),
y=letters[1:9])
mydf
# A tibble: 9 x 2
x y
<chr> <chr>
1 A a
2 A b
3 A c
4 B d
5 B e
6 B f
7 B g
8 B h
9 B i
如前所述,我的数据要大得多,也更混乱,希望最终会出现在一个闪亮的应用程序中,因此它需要完全自主,因此需要对可用的功能有一个坚实的理解,以使其工作。我想这可能需要更多的步骤,而不仅仅是mutate
,可能需要创建一个类似于better
的单独数据帧,然后左键将其连接回原始数据帧
谢谢 我们需要一个小组,由总结
将“y”包装在列表中
out <- mydf %>%
group_by(x) %>%
summarise(y = list(y))
# A tibble: 3 x 2
# x y
# <chr> <list>
#1 A <chr [3]>
#2 B <chr [3]>
#3 C <chr [3]>
out$y
#[[1]]
#[1] "a" "b" "c"
#[[2]]
#[1] "d" "e" "f"
#[[3]]
#[1] "g" "h" "i"
out%
分组依据(x)%>%
总结(y=列表(y))
#一个tibble:3x2
#xy
#
#1A
#2 B
#3 C
出$y
#[[1]]
#[1] “a”“b”“c”
#[[2]]
#[1] “d”“e”“f”
#[[3]]
#[1] “g”“h”“i”
使用tidyr中的nest函数
library(tidyverse)
mydf %>% nest(-x)
# A tibble: 3 x 2
x data
<chr> <list>
1 A <tibble [3 x 1]>
2 B <tibble [3 x 1]>
3 C <tibble [3 x 1]>
库(tidyverse)
mydf%>%nest(-x)
#一个tibble:3x2
x数据
1A
2 B
3 C
太简单了!出于某种原因,我从未想过对任何其他定量总结使用总结
。。。
library(tidyverse)
mydf %>% nest(-x)
# A tibble: 3 x 2
x data
<chr> <list>
1 A <tibble [3 x 1]>
2 B <tibble [3 x 1]>
3 C <tibble [3 x 1]>