首页 > 解决方案 > 将行转换为列,根据另一列制作带有后缀的重复列名

问题描述

我有一个格式为:

df1    <- data.frame(x = c(1,2), y = c(5,6), z = c(7,8), names = c("A","B"))

  x y z names
1 1 5 7     A
2 2 6 8     B

将此 df1 转换为以下内容的最佳方法是什么:

data.frame(x.A = 1, x.B = 2, y.A = 5, y.B = 6, z.A = 7, z.B = 8)

  x.A x.B y.A y.B z.A z.B
1   1   2   5   6   7   8

标签: rdataframe

解决方案


我们创建一个1的序列列,然后使用pivot_wider

library(dplyr)
library(tidyr)
df1 %>% 
  mutate(rn = 1) %>% 
  pivot_wider(names_from = 'names', values_from = c(x, y, z), names_sep = ".") %>%
  select(-rn)

-输出

# A tibble: 1 x 6
#    x.A   x.B   y.A   y.B   z.A   z.B
#  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1     1     2     5     6     7     8

推荐阅读