我是R的新手,还在学习。
我有两个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"))
我想将网址与df合并,只显示出现的第一个网址,因为您可以看到df1
有多个相同page
的条目。
如果有人可以为此base
,dplyr
和data.table
解决方案,我感激不尽。
答案 0 :(得分:2)
这适合我。
R base解决方案
pagenondupe <- df1[!duplicated(df1$page, fromLast = F), ]
dfx <- merge(df, pagenondupe[,c("page", "URL")], by = "page", all.x = TRUE)
我从df1开始接受第一次非欺骗。如果您有日期,可以按日期订购,然后合并。
如果您想从非欺骗的最后一个条目中提取网址,您可以更改fromLast = T
<强>结果强>
page freq URL
ABC 1 fakeurl1
DDD 33 fakeurl2
DSD 555 fakeurl3
<强> Dplyr 强>
df1 %>%
group_by(page) %>%
filter(row_number(URL) == 1) %>%
inner_join(df, df1, by = "page")
<强>结果强>
#page URL freq
#<chr> <fct> <dbl>
#ABC fakeurl1 1.
#DDD fakeurl2 33.
#DSD fakeurl3 555.