提问人:user11057680 提问时间:11/1/2023 最后编辑:user11057680 更新时间:11/2/2023 访问量:40
将一个 DataFrame 中的每个单元格与第二个 Data Frame 中一列中的所有值进行比较,并计算第一个 DF 单元格在 R 中后退的次数
compare each cell in one dataframe to all values within a column in a second data frame and count the number of times the first df cell recedes in r
问:
想要计算 DF2(DF2$B) 整列中的值在 DF1$A 中每个单元格下方的次数。
例:
DF1 <- data.frame(Q=c("fun","fun"),
A=c(200,700))
DF2 <- data.frame(Z=as.Date(c("2023-10-01","2023-10-02","2023-10-03","2023-10-04")),
B=c(600,500,100,800))
期望输出:
DF1$Counter <- c(1,3)
答:
1赞
Onyambu
11/1/2023
#1
利用 findInterval
。请注意,您必须先进入该列sort
DF2$B
DF1$Counter <- findInterval(DF1$A, sort(DF2$B))
DF1
Q A Counter
1 fun 200 1
2 fun 700 3
0赞
user11057680
11/2/2023
#2
Sapply 的替代方案是......
DF1$Counter <- sapply(DF1$A, function(x, y) {sum(y < x)}, y = DF2$B)
评论