将数据框的值更改为列名并为其赋值

Change values of dataframe into column names and assign value to them

我有一个小问题。我想将“2019”和“2020”作为我的列名,将“counter”的匹配值作为它们的值,并删除重复的名称。它看起来像这样:

# A tibble: 6 x 3
# Groups:   Full.Name [3]
  Full.Name             year counter
  <chr>                <dbl>   <int>
1 A. Patrick Beharelle  2019    5541
2 A. Patrick Beharelle  2020    3269
3 Aaron P. Graft        2019     165
4 Aaron P. Graft        2020     200
5 Aaron P. Jagdfeld     2019       4
6 Aaron P. Jagdfeld     2020       5

我希望它看起来像这样:

# A tibble: 6 x 3
# Groups:   Full.Name [3]
  Full.Name             2019    2020
  <chr>                <int>   <int>
1 A. Patrick Beharelle  5541    3269
2 Aaron P. Graft         165     200
3 Aaron P. Jagdfeld        4       5

我知道将数字作为列名并不是明智之举,所以它只是为了演示我想要存档的内容。 我不知道这种转变的正确术语是什么,所以我不知道要寻找什么。也许有人可以帮我存档这个转变。 提前致谢!

这是一个经典的变宽 - 它可以通过多种方式完成,其中之一是 pivot_wider() 来自 tidyr:

library(tidyr)

data |> pivot_wider(names_from = year, values_from = counter)

输出:

#> # A tibble: 3 x 3
#>   Full.Name              `2019` `2020`
#>   <chr>                   <dbl>  <dbl>
#> 1 "A. Patrick Beharelle"   5541   3269
#> 2 "Aaron P. Graft      "    165    200
#> 3 "Aaron P. Jagdfeld   "      4      5

reprex package (v2.0.1)

于 2022-05-17 创建

有关使用 tidyr 重塑数据集的更多信息,请参见此处:https://tidyr.tidyverse.org/articles/pivot.html