r - 在 R 中的 full_join 函数之后从数据框中删除额外的列
问题描述
我目前参与 R 中的数据操作任务并尝试在所选列上组合两个数据集(= 使用主键和外键 - Column2)
Column1 <- c("Name1", "Name2", "Name3", "Name4")
Column2 <- c("ID1", "ID2", "ID3", "ID4")
Column3 <- c(4, 5, 6, 7)
Column4 <- c(8, 9, 10, 11)
Column5 <- c(1, 2, 3, 4)
table1 <- data.frame(Column1, Column2, Column3, Column4, Column5)
Column1 <- c("Name1", "Name2", "Name3", "Name4")
Column2 <- c("ID4", "ID5", "ID6", "ID7")
Column3 <- c(22, 33, 44, 66)
Column4 <- c(66, 55, 77, 77)
Column5 <- c(1, 2, 3, 4)
table2 <- data.frame(Column1, Column2, Column3, Column4, Column5)
table3 <- full_join(table1, table2, by = "Column2")
我选择了完全连接函数,因为它可能有助于解决我的任务,但遇到了一个问题:使用 full_join 函数 R 显示第二个表中的 Column1.y 列,而不是将此列的值列出到 Column.1 。X
例如,R 产生:Column.1.x 然后是 Column2、Column3.x、Column4.x、Column5.x,在 Column5.x 旁边我要显示列“Column3.y”、“Column4.y”、“ Column5.y”,但“Column.1.y”显示在 Column5.x 之后,而不是向下显示到列出所有名称的“Column.1.x”。
我该如何解决?:)
解决方案
我选择@DarwinsBeard,您可以“删除”不需要的列 Column1.y。请记住,您可以使用多个键执行连接。这就是您获得 Column1.x 和 Column1.y 的原因,因为这不是连接键并且出现在两个表中。
检查以下内容:
df1 <- tibble( Column1 = c("Name1","Name2","Name3","Name4")
,Column2 = c("ID1","ID2","ID3","ID4")
# I save Column3 and Column4
,Column5 = c(1,2,3,4)
)
df2 <- tibble( Column1 = c("Name4","Name5","Name6","Name7")
,Column2 = c("ID4","ID5","ID6","ID7")
,Yes = c(8,5,6,7)
,No = c(13,10,11,12)
,Neither = NA
)
# full join keeps columns of both data frames, but replicates Column1
# as the join was only performed on the id-column, i.e. Column2
# as suggested above, remove the unwanted Column1.y with a select(-...) call
df12 <- full_join(df1, df2, by = c("Column2"))
df12
# what I think you want
df12 <- full_join(df1, df2, by = c("Column1","Column2"))
df12
后者通过保持两个关键列的完整性为您提供完全合并的数据集。
注意:您可以使用 select() 调用根据自己的喜好重新调整列的顺序。例如尝试:df12 %>% select(Yes, No, Either, everything())
看看会发生什么。
推荐阅读
- npm - 错误:子编译失败:找不到入口模块:错误:无法解析[文件路径]
- python - 如何在不使用拆分方法的情况下找到字符串中最长的单词
- python-3.x - DRF Serializer 在执行 serializer.data 时返回空字典
- nginx - Nginx 和 certbot 的 ERR_SSL_PROTOCOL_ERROR
- postgresql - MacOS 上本地 postgres 实例中的符号链接问题
- php - 使用 $_POST 将用户输入添加到 PHP 中的 JSON 数组返回“null”数组
- google-cloud-dataflow - “ValueError:不支持将写入处置 WRITE_EMPTY 流式插入到 BigQuery”
- .net - 是否可以将 CsvHelper 配置为抑制所有解析和转换异常?
- r - 在闪亮的仪表板标题中对齐多个操作按钮
- android - 如何使用新的AndroidX Media2?