数据整理扩大和整合行

Data wrangling widen and consolidate rows

提问人:Samuel Priestley 提问时间:4/4/2023 最后编辑:nrennieSamuel Priestley 更新时间:4/4/2023 访问量:34

问:

我想加宽一些行,然后使用 R 合并这些行。

组 ID 角色 盈利
group_1 person_1 一个 10
group_1 person_2 B 20
group_2 person_3 一个 14
group_2 person_4 B 14
group_3 person_5 一个 34
group_3 person_6 B 48

当我使用数据时,如下所示:pivot_wider(names_from = Role, values_from = c(Person, Payoff))

组 ID 一个 B 回报 B 收益
group_1 person_1 10
group_1 person_2 20
group_2 person_3 14
group_2 person_4 14
group_3 person_5 34
group_3 person_6 48

但是,我希望数据如下表所示。我应该使用不同的命令还是应该使用其他方式?pivot_wider

组 ID 一个 B 回报 B 收益
group_1 person_1 person_2 10 20
group_2 person_3 person_4 14 14
group_3 person_5 person_6 34 48

我还尝试了类似于以下命令的代码

data %>%
  group_by('session_group_id') %>% 
  pivot_wider(names_from = Role, values_from = c(Person, Payoff))

data %>%
  group_by('session_group_id') %>%
  pivot_wider(names_from = Role,
              values_from = c(Person, Payoff),
              values_fn = list)
r tidyverse 操作 数据 整理

评论

0赞 L Tyrone 4/4/2023
与@DaveArmstrong一样,您的代码也对我有用。Dave 的示例在“组 ID”列中有一个下划线,但我尝试了带下划线和不带下划线的下划线,它双向工作。dat %>% pivot_wider(names_from = Role, values_from = c(Person, Payoff))
0赞 L Tyrone 4/4/2023
如果在以下 df 上运行代码,问题是否仍然存在:?pivot_wider()dat <- data.frame("Group ID" = rep(sprintf("group_%s",seq(1:3)), each = 2), Person = sprintf("person_%s",seq(1:6)), Role = rep(c("A", "B"), 3), Payoff = c(10,20,14,14,34,48), check.names = FALSE)

答:

2赞 DaveArmstrong 4/4/2023 #1

使用您的代码,我得到了正确的答案(v 1.3.0,v 1.1.0):tidyrdplyr

library(tidyr)
library(dplyr)
dat <- read.table(header=TRUE, 
           text="
Group_ID    Person  Role    Payoff
group_1 person_1    A   10
group_1 person_2    B   20
group_2 person_3    A   14
group_2 person_4    B   14
group_3 person_5    A   34
group_3 person_6    B   48
")
dat %>% pivot_wider(names_from = Role, values_from = c(Person, Payoff))
#> # A tibble: 3 × 5
#>   Group_ID Person_A Person_B Payoff_A Payoff_B
#>   <chr>    <chr>    <chr>       <int>    <int>
#> 1 group_1  person_1 person_2       10       20
#> 2 group_2  person_3 person_4       14       14
#> 3 group_3  person_5 person_6       34       48

创建于 2023-04-03 使用 reprex v2.0.2