当前位置: 首页 > 知识库问答 >
问题:

如何使用DPLYR::Pull将分组的colum转换为向量?

诸葛砚
2023-03-14
library(tidyverse)
library(reprex)

df <- tibble(group = c(1,1,1,1,2,2,2,3,3,3,3,3),
             name = c('Jim','Deb','Bill','Ann','Joe','Jon','Jane','Jake','Sam','Gus','Trixy','Don'),
             type = c(1,2,3,4,3,2,1,2,3,1,4,5))

df
#> # A tibble: 12 x 3
#>    group name   type
#>    <dbl> <chr> <dbl>
#>  1     1 Jim       1
#>  2     1 Deb       2
#>  3     1 Bill      3
#>  4     1 Ann       4
#>  5     2 Joe       3
#>  6     2 Jon       2
#>  7     2 Jane      1
#>  8     3 Jake      2
#>  9     3 Sam       3
#> 10     3 Gus       1
#> 11     3 Trixy     4
#> 12     3 Don       5

# Desired Output - New Col is a column of vectors

df2 <- tibble(group=c(1,2,3),name=c("Jim","Jane","Gus"), type=c(1,1,1), new_col = c("'Jim','Deb','Bill','Ann'","'Joe','Jon','Jane'","'Jake','Sam','Gus','Trixy','Don'"))
df2
#> # A tibble: 3 x 4
#>   group name   type new_col                         
#>   <dbl> <chr> <dbl> <chr>                           
#> 1     1 Jim       1 'Jim','Deb','Bill','Ann'        
#> 2     2 Jane      1 'Joe','Jon','Jane'              
#> 3     3 Gus       1 'Jake','Sam','Gus','Trixy','Don'
Created on 2020-11-14 by the reprex package (v0.3.0)

共有1个答案

严升
2023-03-14

也许这就是你要找的:

library(dplyr)

df <- tibble(group = c(1,1,1,1,2,2,2,3,3,3,3,3),
             name = c('Jim','Deb','Bill','Ann','Joe','Jon','Jane','Jake','Sam','Gus','Trixy','Don'),
             type = c(1,2,3,4,3,2,1,2,3,1,4,5))

df %>% 
  group_by(group) %>%
  mutate(new_col = name, name = first(name, order_by = type), type = first(type, order_by = type)) %>% 
  group_by(name, type, .add = TRUE) %>% 
  summarise(new_col = paste(new_col, collapse = ","))
#> `summarise()` regrouping output by 'group', 'name' (override with `.groups` argument)
#> # A tibble: 3 x 4
#> # Groups:   group, name [3]
#>   group name   type new_col               
#>   <dbl> <chr> <dbl> <chr>                 
#> 1     1 Jim       1 Jim,Deb,Bill,Ann      
#> 2     2 Jane      1 Joe,Jon,Jane          
#> 3     3 Gus       1 Jake,Sam,Gus,Trixy,Don

编辑如果new_col应该是向量列表,则可以执行`summarise(new_col=list(c(new_col)))

df %>% 
  group_by(group) %>%
  mutate(new_col = name, name = first(name, order_by = type), type = first(type, order_by = type)) %>% 
  group_by(name, type, .add = TRUE) %>% 
  summarise(new_col = list(c(new_col)))

另一种选择是使用tidyr::nest:

df %>% 
  group_by(group) %>%
  mutate(new_col = name, name = first(name, order_by = type), type = first(type, order_by = type)) %>% 
  nest(new_col = new_col)
 类似资料:
  • 注意温度场是一个浮动列表。我希望将这些浮点数列表转换为MLlib类型,并且希望这种转换使用基本的API来表示,而不是通过RDDs(这是低效的,因为它将所有数据从JVM发送到Python,处理是在Python中完成的,我们没有得到Spark的Catalyst优化器yada yada的好处)。我该怎么做?具体来说: 有没有办法让直铸件工作?请参见下面的详细信息(以及一次失败的变通尝试)?或者,是否有其

  • 我想在mtcars数据集中做类似于将gpm(加仑每英里=1/mpg)模型与wt的拟合。这似乎很容易: 这就得到了一个有6行的行数据帧,正如预期的那样。 这张图确认了六组: 我可以使用augment()获得匹配的输出: 从其他地方的阅读中,我发现group_by和rowwise数据帧不兼容,因此lm1未分组,augment不能关联models和newdata。是否有另一种设计模式可以让我这样做?如果

  • 问题内容: 我做了以下数组: 我想知道如何使用stdClass()将此数组转换为对象,我是PHP初学者,一个简单的示例会非常有帮助,我尝试搜索类似的问题,但是答案很复杂,而且超出了我对基本类和对象的理解。 问题答案: 您只需添加此代码 如果要查看此stdClass对象,只需调用此 如果要将数组转换为目标代码,将 您不需要使用stdClass。它将自动转换为stdClass

  • 问题内容: 将Object数组转换为Vector的最佳方法是什么? JDE <1.5 this.elements是一个Object [] 谢谢,雷特 我应该澄清我的问题 我的目标平台是黑莓。 不支持收藏。Array.asList()也不是:// 全班 问题答案: 现在,好像您要复制两次数据,但实际上并非如此。您确实得到了一个小的临时对象(来自的),但这提供了阵列的视图。而不是复制它,读和写操作将遍

  • 我在C++中创建了一个将数字转换为数组的函数。由于这一创建,我还创建了将数组转换回数字的相反部分: 问题就在这里。当我在main中使用以下代码运行时: 我得到了240000,而我应该得到235626。我找了很久都找不到代码中的逻辑错误。有人知道怎么回事吗?

  • 问题内容: 如何在PHP中将数组转换为SimpleXML对象? 问题答案: 一个简短的: 结果是 键和值被交换- 您可以在array_walk之前用来解决。需要PHP5。您可以改用PHP 5 ,但那时您将不会进入xml。