通过使用dplyr将列值分组为单个列来旋转数据帧

通过使用dplyr将列值分组为单个列来旋转数据帧,r,dplyr,pivot,R,Dplyr,Pivot,第一次海报-请友好 我有一个包含两列的df,我希望将其作为轴心,使其中一列中的每个唯一值成为新df的列名,并在该列的单元格中与其关联的值 以星球大战为例 starwars %>% select(name, homeworld) # A tibble: 87 x 2 name homeworld <chr> <chr> 1 Luke Skywalker Tatooine 2 C

第一次海报-请友好

我有一个包含两列的df,我希望将其作为轴心,使其中一列中的每个唯一值成为新df的列名,并在该列的单元格中与其关联的值

以星球大战为例

starwars %>% 
select(name, homeworld)

# A tibble: 87 x 2
   name               homeworld
   <chr>              <chr>    
 1 Luke Skywalker     Tatooine 
 2 C-3PO              Tatooine 
 3 R2-D2              Naboo    
 4 Darth Vader        Tatooine 
 5 Leia Organa        Alderaan 
 6 Owen Lars          Tatooine 
 7 Beru Whitesun lars Tatooine 
 8 R5-D4              Tatooine 
 9 Biggs Darklighter  Tatooine 
10 Obi-Wan Kenobi     Stewjon  
# … with 77 more rows
。。。我想要的是这个,但旋转90°


我非常感谢任何帮助,最好还是坚持使用dplyr/tidyverse语言。

names\u from
获取我们想要的列的值,作为宽格式的列名,
values\u to
获取这些列的值。这里我们可以使用
names\u from
作为
homeworld
,因为我们希望这些值作为列名

library(dplyr)
library(tidyr)

starwars %>%
  select(name, homeworld) %>%
  group_by(homeworld) %>%
  mutate(rn = row_number()) %>%
  ungroup() %>%
  pivot_wider(names_from = homeworld, values_from = name) %>%
  select(-rn)

name\u from
应该是
homeworld
pivot\u wide(name\u from=homeworld,values\u from=name)
@RonakShah,谢谢你。解决了的
library(dplyr)
library(tidyr)

starwars %>%
  select(name, homeworld) %>%
  group_by(homeworld) %>%
  mutate(rn = row_number()) %>%
  ungroup() %>%
  pivot_wider(names_from = homeworld, values_from = name) %>%
  select(-rn)