我想加宽一些行,然后使用 R 合并这些行。
组号 | 人 | 角色 | 回报 |
---|---|---|---|
group_1 | person_1 | A | 10 |
group_1 | person_2 | 乙 | 20 |
group_2 | person_3 | A | 14 |
group_2 | person_4 | 乙 | 14 |
group_3 | person_5 | A | 34 |
group_3 | person_6 | 乙 | 48 |
当我使用
pivot_wider(names_from = Role, values_from = c(Person, Payoff))
时,数据看起来像这样:
组号 | A | 乙 | 回报 | B 回报 |
---|---|---|---|---|
group_1 | person_1 | NA | 10 | NA |
group_1 | NA | person_2 | NA | 20 |
group_2 | person_3 | NA | 14 | NA |
group_2 | NA | person_4 | NA | 14 |
group_3 | person_5 | NA | 34 | NA |
group_3 | NA | person_6 | 钠 | 48 |
不过,我要数据看下表。我应该使用不同的命令还是应该使用其他方式
pivot_wider
?
组号 | A | 乙 | 回报 | 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)
使用你的代码,我得到了正确的答案(
tidyr
v 1.3.0,dplyr
v 1.1.0):
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