我有一个data.frame df1
df1 <- data.frame(id=1:10)
我有第二个data.frame df2
df2 <- data.frame(id=1:100, key=sample(1:10,100,replace=T), var1=sample(c(TRUE, FALSE),100, replace=T), var2=sample(c("X", "Y"),100, replace=T))
变量df2$key
是辅助密钥,指向变量df1$id
。
现在,对于df1
中的每个条目,我想检查df2
中有多少条目,具体情况如下。
一个例子:
如果df1$id==5
我想创建一个变量df1$count
来计算data {frame df2
中df2$key==5
和df2$var==TRUE
的条目数。
感谢您的帮助!
答案 0 :(得分:1)
以下是你在基地R中的表现:
merge(df1, aggregate(var1 ~ key, df2, FUN = sum),
by.x = "id", by.y = "key", all.x = TRUE)
id var1
1 1 3
2 2 1
3 3 4
4 4 6
5 5 9
6 6 4
7 7 5
8 8 7
9 9 4
10 10 3
或使用dplyr:
library(dplyr)
df2 %>%
filter(var1) %>%
count(key) %>%
right_join(df1, by = c("key" = "id"))
在这两种情况下,我们首先进行计数,然后将结果合并到df1。