r - 使用 dplyr 通过将列值分组为单个列来透视数据框
问题描述
第一次海报 - 请善待。
我有一个包含 2 列的 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
...我想旋转 df 使得每个 homeworld 都是一列,下面是来自该 homeworld 的字符的名称。当然,会有一些列比其他列有更多的观察 - 我可以让这些成为 NA 来填充 df。
玩pivot_wider
,并使用类似问题的答案,我设法将家庭世界作为行,而不是列......
starwars %>%
select(name, homeworld) %>%
group_by(homeworld) %>%
mutate(rn = row_number()) %>%
ungroup() %>%
pivot_wider(names_from = rn, values_from = name)
# A tibble: 49 x 12
homeworld `1` `2` `3` `4` `5` `6` `7` `8` `9` `10` `11`
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 Tatooine Luke Skywalker C-3PO Darth Vader Owen Lars Beru Whitesun la… R5-D4 Biggs Darkligh… Anakin Skywal… Shmi Skywal… Cliegg La… NA
2 Naboo R2-D2 Palpatine Jar Jar Binks Roos Tarpa… Rugor Nass Ric Olié Quarsh Panaka Gregar Typho Cordé Dormé Padmé Amid…
3 Alderaan Leia Organa Bail Prestor Org… Raymus Antill… NA NA NA NA NA NA NA NA
4 Stewjon Obi-Wan Kenobi NA NA NA NA NA NA NA NA NA NA
5 Eriadu Wilhuff Tarkin NA NA NA NA NA NA NA NA NA NA
6 Kashyyyk Chewbacca Tarfful NA NA NA NA NA NA NA NA NA
7 Corellia Han Solo Wedge Antilles NA NA NA NA NA NA NA NA NA
8 Rodia Greedo NA NA NA NA NA NA NA NA NA NA
9 Nal Hutta Jabba Desilijic Ti… NA NA NA NA NA NA NA NA NA NA
10 Bestine IV Jek Tono Porkins NA NA NA NA NA NA NA NA NA NA
# … with 39 more rows
...我想要的是这个但旋转了 90°。
我真的很感激任何帮助,最好坚持使用 dplyr / tidyverse 语言。
解决方案
names_from
将我们想要的列的值作为宽格式的列名,并values_to
获取这些列的值。在这里,我们可以随意使用这些值names_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)
推荐阅读
- python - 什么是 numpy 数组的“数据”属性?
- powershell - 获取 Acl 无效名称
- linux - 将 grep 输出打印到行中
- java - 如何使用 Eclipse 在动态 Web 项目上进行协作
- sql - WITH TIES 不根据记录类型过滤记录
- javascript - 每页 csrf 令牌 - java.lang.IllegalStateException:启用每页令牌时必须定义“uri”属性
- shell - 通过 Onenote 共享链接提取信息
- mysql - 共享数据的单元格
- python - 如何从向量列表中确定近似对称性?
- laravel - Laravel 6/7 删除带有验证的实体