通过使用dplyr将列值分组为单个列来旋转数据帧
第一次海报-请友好 我有一个包含两列的df,我希望将其作为轴心,使其中一列中的每个唯一值成为新df的列名,并在该列的单元格中与其关联的值 以星球大战为例通过使用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
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)