获取具有相同值的行并在 R 中创建不同的列

Get rows with same values and creates different columns in R

我有一个在第一列中具有重复序列的 df,我想获取相同数字(在第 1 列中)内的值并使用它们创建列。 Obs:我的 df 有 25502100 行,序列由 845 个值组成。 请参阅下面我的 df 的一个简单示例:

df <- data.frame(x = c(1,2,3,4,1,2,3,4), y = c(0.1,-2,-3,1,0,10,6,9))

我想要一个函数来将这个 df 转换成:

df_new
  x    y  z
1 1  0.1  0
2 2 -2.0 10
3 3 -3.0  6
4 4  1.0  9

有人有解决办法吗?

选项pivot_wider

library(tidyr)
library(data.table)
library(dplyr)
df %>% 
   mutate(rn = c('y', 'z')[rowid(x)]) %>%
   pivot_wider(names_from = rn, values_from = y)

-输出

# A tibble: 4 x 3
#      x     y     z
#  <dbl> <dbl> <dbl>
#1     1   0.1     0
#2     2  -2      10
#3     3  -3       6
#4     4   1       9