r - 将具有 X1、Y1、X2、Y2 的数据框重塑为 R 中的 X、Y1、Y2
问题描述
我有一个df
带有 XY 组合的数据框,如下所示
> df <- data.frame(X1=c(1:4),Y1=c(16:13),X2=c(4:7),Y2=c(-1:-4))
> df
X1 Y1 X2 Y2
1 1 16 4 -1
2 2 15 5 -2
3 3 14 6 -3
4 4 13 7 -4
并希望通过合并和添加一个新变量来重塑df
to或在没有值的地方留下。df2
X1
X2
X
NA
Y1
Y2
结果看起来像这样
> df2
X Y1 Y2
1 1 16 NA
2 2 15 NA
3 3 14 NA
4 4 13 -1
5 5 NA -2
6 6 NA -3
7 7 NA -4
最有效的方法是什么?
解决方案
您可以使用dplyr::full_join
:
df2 <- dplyr::full_join(df[, c("X1", "Y1")], df[, c("X2", "Y2")], by = c("X1" = "X2"))
names(df2)[1] <- "X"
df2
# X Y1 Y2
#1 1 16 NA
#2 2 15 NA
#3 3 14 NA
#4 4 13 -1
#5 5 NA -2
#6 6 NA -3
#7 7 NA -4
推荐阅读
- mysql - 如何在一个脚本中同时执行 MySQL 查询和 bash 命令?
- dynamics-crm - 实体上的汇总字段多久重新计算一次?
- html - 有没有办法指定相对边框宽度和最小内容宽度?
- java - 从未知字符串中检索枚举值
- html - 未为 document.querySelector 定义文档
- amazon-web-services - 诊断 AWS 应用程序负载均衡器的缓慢响应时间
- swift - 如何在spritekit tilemap中设置tileset的不透明度?
- matlab - 如何以矢量化方式从matlab中的TSP距离矩阵计算所有行程的长度
- html - 如何删除div元素之间的空间?
- r - 在 R Shiny 中操作用户上传的文件/数据