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)