gpt4 book ai didi

r - 如何从数据框中取消嵌套向量?

转载 作者:行者123 更新时间:2023-12-04 12:32:02 25 4
gpt4 key购买 nike

我有一个长格式的数据框,其中包含公司及其按地区的估计。我想建立一个宽表,我可以在其中查看按地区向一家公司提供了多少正面和负面估计。当我尝试 pivot_wider 时,我收到一个数据框,其单元格中包含向量。没关系,但是我无法按地区计算正面和负面反馈的数量。还尝试使用 unnestunnest_longer 函数。后者虽然似乎解决了我的问题,但只需要一个参数即可取消嵌套列。

我怎样才能修改我的 pivot_wider 以获得理想的结果?

我的数据框:

set.seed(1407)
test_df <- data.frame(code = rep(c("positive", "negative"), 9),
company = c("Google", "Amazon", "SpaceX", "BlueOrigin",
"Google", "Western Digital", "Aliexpress",
"Tencent", "Aliexpress"),
n = rbinom(18, size = 9, prob = 0.5),
region = c("Asia", "Europe", "Middle East"))

我使用函数来加宽表格得到的结果:

test_df %>% 
pivot_wider(id_cols = region,
names_from = code,
values_from = n)

# A tibble: 3 x 3
region positive negative
<chr> <list> <list>
1 Asia <int [3]> <int [3]>
2 Europe <int [3]> <int [3]>
3 Middle East <int [3]> <int [3]>

我想要的输出:

region      positive  negative

Asia 4 2
Asia 3 5
Asia 5 2
Europe 3 5
Europe 6 4
Europe 5 1
Middle East 8 5
Middle East 6 5
Middle East 6 2

最佳答案

您可以按以下方式修改您的解决方案。当 id_colsvalue 的组合不能唯一标识观察结果时,结果将是一个命名列表。例如,您可能会注意到 Asian == 5 的组合不止一种,因此我决定使用所有剩余的列,而不是 names_from 中指定的列values_from in id_cols 是默认选择,而不仅仅是 region

library(tidyr)

test_df %>%
pivot_wider(names_from = code,
values_from = n) %>%
arrange(region)

# A tibble: 9 x 4
company region positive negative
<chr> <chr> <int> <int>
1 Google Asia 4 5
2 BlueOrigin Asia 5 2
3 Aliexpress Asia 3 2
4 Amazon Europe 6 5
5 Google Europe 3 1
6 Tencent Europe 5 4
7 SpaceX Middle East 8 5
8 Western Digital Middle East 6 5
9 Aliexpress Middle East 6 2

关于r - 如何从数据框中取消嵌套向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68375037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com