我试图在R中实现vlookup类型的功能,我有两个数据帧- Id列具有唯一的值。
# DataFrame1 - df1
Data ID C1 C2 C3
R1 ax 12 33 11
R2 ay 11 2 0
R3 az 3 3 0
R4 ar 2 3 1
R5 ag 2 3 1
# DataFrame2 - df2
Id
ax
ay
我希望获取所有数据,并从DataFrame1获取其计数,DataFrame2和DataFrame1的Ids之间存在匹配。
产出应是-
Data ID C1 C2 C3
R1 ax 12 33 11
R2 ay 11 2 0
它的数量将是2
而且,如果没有合并函数,这可能吗?
发布于 2016-06-22 11:00:17
若要在第二个数据中对第一个数据进行子集,请计数行数:
z=df1[df1$ID %in% df2$Id,]
count=nrow(z)
发布于 2016-06-22 12:57:34
使用dplyr
library(dplyr)
inner_join(df1, df2, by = c("ID" = "Id")) # Because Id columns names are different
inner_join(df1, df2) # If the Id columns were the same
使用sqldf
library(sqldf)
sqldf('SELECT * FROM df1 JOIN df2 USING (ID)') # Not case sensitive
输出:
Data ID C1 C2 C3
1 R1 ax 12 33 11
2 R2 ay 11 2 0
https://stackoverflow.com/questions/37976093
复制