r - 将行转换为列,根据另一列制作带有后缀的重复列名
问题描述
我有一个格式为:
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
解决方案
我们创建一个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
推荐阅读
- c++ - 优化编译时应该知道的if-else,但信息在不同的项目中
- c# - 如何使用 C# 中的 VirusTotal.NET 库查找文件是否被病毒感染?
- mysql - 由于添加 base64 数据而旋转时无法在 TinyMCE 中保存 img url?
- python - 如何删除嵌套列表中的重复项?
- php - 检查 Laravel 迁移文件中是否存在列
- regex - 在 Ubuntu 中使用重命名递归地更改文件的前缀,(正则表达式不起作用)
- css - 如何使用边框图像制作自定义 CSS 边框?
- c++ - 有没有更简单的方法:if(num1 > num2 && num1 > num3),以获得更大的变量列表进行比较?
- python - 当图像是表格时,是否可以更改图像的部分背景颜色?
- excel - 如果存在则更新,否则插入