R:将data.frame中的值折叠成与粘贴类似的向量(折叠=';,';)
考虑这样的代码和输出R:将data.frame中的值折叠成与粘贴类似的向量(折叠=';,';),r,group-by,dplyr,R,Group By,Dplyr,考虑这样的代码和输出 mtcars %>% group_by(gear) %>% summarize(cyls=paste(unique(cyl),collapse=',')) # A tibble: 3 x 2 gear cyls <dbl> <chr> 1 3 6,8,4 2 4 6,4 3 5 4,8,6 “输出”应该是向量类型的列或类似的内容 gear cyls 3 c(6,8,4) 4 c(6,4
mtcars %>% group_by(gear) %>% summarize(cyls=paste(unique(cyl),collapse=','))
# A tibble: 3 x 2
gear cyls
<dbl> <chr>
1 3 6,8,4
2 4 6,4
3 5 4,8,6
“输出”应该是向量类型的列或类似的内容
gear cyls
3 c(6,8,4)
4 c(6,4)
5 c(4,8,6)
将
cyls
设置为如下列表列:
my_df <- mtcars %>% group_by(gear) %>% summarize(cyls=list(unique(cyl)))
my_df$cyls[[1]] # boom dbl vectors for each row stored as a list
[1] 6 8 4
my_df%group_by(gear)%%>%summary(cys=list(unique(cyl)))
my_df$cyls[[1]]#存储为列表的每行的boom dbl向量
[1] 6 8 4
使用基本R,我们可以:
(dat=aggregate(cyl~gear,mtcars,unique))
gear cyl
1 3 6, 8, 4
2 4 6, 4
3 5 4, 8, 6
在哪里
dat$cyl
$`1`
[1] 6 8 4
$`2`
[1] 6 4
$`3`
[1] 4 8 6
使用
dplyr
您必须将最终的TIBLE强制到数据帧中才能获得相同的结果您是指向量类型还是TIBLE为1乘以3还是2?同样的事情,只是额外的强制,不是吗?可能会更友好地打印mtcars%%>%groupby(gear)%%>%summary(cyls=list(unique(cyl)))%%>%as.data.frame()
。右键打印更友好。dat$cyl
仍然是一个列表,与dplyr
相同。这只是一个不同的打印显示添加到Nate的评论中,dplyr TIBLES也是数据帧。对要查看的结果执行class
。虽然列表将不可见,但为True。它将隐藏在dblYou中,您可以使用print.AsIs
而不是默认的print
,这也是另一种方法。尽管为了使数据可视化,您必须时不时地打印。
dat$cyl
$`1`
[1] 6 8 4
$`2`
[1] 6 4
$`3`
[1] 4 8 6