r - 合并两个数据框并在 R 中创建多个列
问题描述
假设我们有两个数据框,如下所示:
df1 <- data.frame(Team1 = c("A","B","C"), Team2 = c("D","E","F"), Winner = c("A","E","F"))
df2 <- data.frame(Country = c("A","B","C","D","E","F"), Index = c(1,2,3,4,5,6))
我想要的是在 df2 中创建三列作为 Team1_index、Team2_index 和 Winner_index。
Team1 Team2 Winner Team1_index Team2_index Winner_index
A D A 1 4 1
B E E 2 5 5
C F F 3 6 6
我尝试了很多方法,但都失败了。提示和建议!
解决方案
如果你有更多的专栏,你可能会寻找更系统的解决方案,但如果真的只是三种情况,应该这样做:
library("tidyverse")
df1 <- data.frame(Team1 = c("A","B","C"), Team2 = c("D","E","F"), Winner = c("A","E","F"))
df2 <- data.frame(Country = c("A","B","C","D","E","F"), Index = c(1,2,3,4,5,6))
df1 %>%
left_join(df2 %>% rename(Team1 = Country), by = "Team1") %>%
rename(Team1_Index = Index) %>%
left_join(df2 %>% rename(Team2 = Country), by = "Team2") %>%
rename(Team2_Index = Index) %>%
left_join(df2 %>% rename(Winner = Country), by = "Winner") %>%
rename(Winner_Index = Index)
#> Warning: Column `Team1` joining factors with different levels, coercing to
#> character vector
#> Warning: Column `Team2` joining factors with different levels, coercing to
#> character vector
#> Warning: Column `Winner` joining factors with different levels, coercing to
#> character vector
#> Team1 Team2 Winner Team1_Index Team2_Index Winner_Index
#> 1 A D A 1 4 1
#> 2 B E E 2 5 5
#> 3 C F F 3 6 6
您可以放心地忽略这些警告。
推荐阅读
- python - 我的代码没有打印“未找到匹配项”,为什么?
- arrays - Swift - 向字典中的数组添加值
- java - 仅从 GitHub API 返回选定的字段
- javascript - 有没有办法可以预览我的 html 文件?
- javascript - 如何使用 i18n 制作具有漂亮 URL 的网站?
- oracle-apex - ords 独立服务器的 oracle apex ssl 配置
- compilation - 如何在 Chromium 中本地执行 AVI 视频?
- django - Django 和 python - 不同的版本
- r - 在 R 中计算 T2 统计量
- php - 从 discord.js 运行 php 网页