R:对数据进行分组并将行重新组装为列

问题描述 投票:0回答:1

所以我有一张给人们打电话的次数表。如果有人没有接听,我们会在其他时间尝试再次给他们打电话(如果需要的话,再打电话一次)。每次尝试呼叫都列在同一列中,因此“人员”列具有重复的值。所以像这样:

通话时间 回答
1 12:00 无人应答
2 12:12 无人应答
3 12:19 回答
2 18:10 无人应答
1 13:00 回答
2 19:12 回答

我想拆分数据,以便每人一行包含所有拨打电话的次数,就像这样

第一次通话 第一个答案 第二次通话 第二个答案 第三次通话 第三个答案
1 12:00 无人应答 13:00 回答
2 12:12 无人应答 18:10 无人应答 19:12 回答
3 12:19 回答

我真的很感谢一些帮助,谢谢。

r
1个回答
0
投票

您可以添加一个列来定义人员内每个呼叫的 ID,然后使用

pivot_wider
生成列

library(tidyverse)

df <- tibble(person = c(1, 1, 2, 3, 4, 4, 4))
df$call_time <- rnorm(nrow(df))
df %>%
  mutate(call_id = 1:n(), .by = person) %>%
  pivot_wider(id_cols = person, names_from = call_id, names_prefix = "call_",
              values_from = call_time)
#> # A tibble: 4 × 4
#>   person   call_1 call_2 call_3
#>    <dbl>    <dbl>  <dbl>  <dbl>
#> 1      1  1.26    -0.442  NA   
#> 2      2  0.356   NA      NA   
#> 3      3  0.241   NA      NA   
#> 4      4 -0.00412  0.926  -1.27

创建于 2024-07-02,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.