在SQL
中,您可以使用WHERE EXISTS
限定符限制查询结果。例如,这个:
SELECT *
FROM Table_B
WHERE EXISTS (SELECT ID FROM TABLE_A)
你能在R
做同样的事情吗?
我有一个大型数据框 - 称之为df.a.
str(df.a)
ClientID : Factor w/ 148892 levels
Month : Date, format "2012-07-31"
Visits : int
我将df.a子集化为较小的df.b.现在,我想回到df.a,但只有在clientID在df.b中时才能获取记录。
我能够像这样使用merge
,但我希望有一个更优雅的解决方案。
july.activity <- merge(df.a, df.b, by="ClientID", all.x=TRUE)
july.activity <- subset(july.activity, Visits.x != "NA")
答案 0 :(得分:3)
也许这可以满足您的需求?
july.activity <- df.a[df.a$ClientID %in% df.b$ClientID & !is.na(df.a$Visits), ]
df.a <- data.frame(ClientID = factor(letters[c(1,2,2,3)]), Visits = c(1,NA,2,3))
df.b <- df.a[1:2,]
df.b
ClientID Visits
1 a 1
2 b NA
df.a
ClientID Visits
1 a 1
2 b NA
3 b 2
4 c 3
df.a[df.a$ClientID %in% df.b$ClientID & !is.na(df.a$Visits), ]
ClientID Visits
1 a 1
3 b 2