【发布时间】:2022-01-11 03:24:09
【问题描述】:
我最初使用的是 dplyr::left_join(),但它没有我想要的 match = "first" 参数在 plyr::join 中可用。现在的问题是我剩余的代码有 .x 和 .y 用于重复变量,所以我不能只使用 janitor::clean_names()。
让您了解我在说什么:
id <- c(1, 2, 3, 4, 5)
name1 <- c("a", "b", "c", "d", "e")
name2 <- c("k", "l", "m", "n", "o")
name3 <- c("u", "v", "w", "x", "y")
name4 <- c("z", "a", "b", "c", "d")
df <- data.frame(id, name1, name2, name3, name4)
id <- c(1, 2, 3, 4, 5)
name1 <- c("f", "i", "j", "k", "l")
name2 <- c("p", "q", "r", "s", "t")
name3 <- c("z", "a", "b", "c", "d")
name5 <- c("z", "a", "b", "c", "d")
df2 <- data.frame(id, name1, name2, name3, name5)
library(plyr)
df_join <- plyr::join(df, df2, by=c("id"), type="left", match="first")
我想把重复的变量(name1、name2、name3)变成如下:
右侧:name1.x、name2.x、name3.x 左侧:name1.y、name2.y、name3.y
我该怎么做呢? janitor::clean_names() 似乎只为左侧变量添加“_2”。
【问题讨论】:
-
可能是
df %>% left_join(df2, by = 'id') %>% group_by(id) %>% slice_head()? -
@jpdugo17 slice_head() 只是为我输出观察结果。如果我加入多个列怎么办?
-
我怀疑
group_by(id, id2)。