R 匹配特定列并合并[不同长度DF]

R 匹配特定列并合并[不同长度DF],r,dplyr,data.table,R,Dplyr,Data.table,我是新手,还在学习 我有两个data.frames,df和df1 page <- c("ABC", "DDD", "DSD") freq <- c(1,33,555) df <- data.frame(page, freq) df1 <- data.frame(page = c("ABC", "DDD", "DSD", "SDSD", "vEf", "DDD"), URL = c("fakeurl1", "fakeurl2", "fakeurl3", "fakeurl

我是新手,还在学习

我有两个
data.frames
df
df1

page <- c("ABC", "DDD", "DSD")
freq <- c(1,33,555)
df <- data.frame(page, freq)

df1 <- data.frame(page = c("ABC", "DDD", "DSD", "SDSD", "vEf", "DDD"),
 URL = c("fakeurl1", "fakeurl2", "fakeurl3", "fakeurl4", "fakeurl5", "fakeurl6")) 
page这对我很有用

R基本解决方案

pagenondupe <- df1[!duplicated(df1$page, fromLast = F), ]
dfx <- merge(df, pagenondupe[,c("page", "URL")], by = "page", all.x = TRUE)
Dplyr

df1 %>% 
group_by(page) %>% 
filter(row_number(URL) == 1) %>% 
inner_join(df, df1, by = "page")
结果

 page freq      URL
  ABC    1 fakeurl1
  DDD   33 fakeurl2
  DSD  555 fakeurl3
#page  URL       freq
#<chr> <fct>    <dbl>
#ABC   fakeurl1    1.
#DDD   fakeurl2   33.
#DSD   fakeurl3  555.
#页面URL频率
#     
#ABC fakeurl1。
#DDD fakeurl2 33。
#DSD fakeurl3 555。

您的意思是,在页面列中,DDD必须通过
URL
中的第一个条目与之合并吗?@RanaUsman是的。默认参数正好在这里起作用(对于fromLast、by、all.x):
合并(df,df1[!duplicated(df1$page),])
,尽管我认为最好像您所做的那样显式化。@Frank谢谢您的提及,我提到了它,以防他需要从最后一个条目中提取url。答案已更新。@Rana Dplyr有一个
独特的
功能,可以代替您的group\u by+filter。。。类似于
内部连接(distinct(df1,page,.keep\u all=TRUE),df)