我正在尝试在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之间存在匹配。
输出应为 -
Data ID C1 C2 C3
R1 ax 12 33 11
R2 ay 11 2 0
,其计数为2
此外,这可能没有合并功能吗?
答案 0 :(得分:3)
要按您的第二个数据帧进行子集化,然后计算行数:
z=df1[df1$ID %in% df2$Id,]
count=nrow(z)
答案 1 :(得分:0)
使用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