sách gpt4 ai đã đi

r - 检查列值是否在其他两个列值的(范围)之间

In lại 作者:行者123 更新时间:2023-12-03 09:46:40 29 4
mua khóa gpt4 Nike

我有一个看起来像这样的数据框(Dataframe X):

id number found
1 5225 NA
2 2222 NA
3 3121 NA

我有另一个看起来像这样的数据框(Dataframe Y):
id number1 number2    
1 4000 6000
3 2500 3300
3 7000 8000

我想要做的是:对于 Dataframe X“number”列中的每个值,搜索它是否等于或介于 Dataframe Y 的“number1”和“number2”对值中的任何一个。此外,对于这个“number1” "和 "number2"对值,其各自的 "id"必须与 Dataframe X 中的 "id"匹配。如果这一切都是真的,那么我想在 Dataframe X 中相应行的 "found"列中插入一个 "YES":
id number found
1 5225 YES
2 2222 NA
3 3121 YES

我该怎么做呢?谢谢您的帮助。

1 Câu trả lời

这是一个使用 fuzzy_join 的选项

library(fuzzy_join)
library(dplyr)
fuzzy_left_join(X, Y[-1], by = c("number" = "number1", "number" = "number2"),
match_fun =list(`>=`, `<=`)) %>%
mutate(found = c(NA, "YES")[(!is.na(number1)) + 1]) %>%
select(names(X))
# id number found
#1 1 5225 YES
#2 2 2222
#3 3 3121 YES

或者另一种选择是与 dữ liệu.bảng 的非对等连接
thư viện(dữ liệu.bảng)
setDT(X)[, found := NULL]
X[Y, found := "YES", on = .(number >= number1, number <= number2)]
X
# id number found
#1: 1 5225 YES
#2: 2 2222
#3: 3 3121 YES

dữ liệu
X <- structure(list(id = 1:3, number = c(5225L, 2222L, 3121L), found = c(NA, 
NA, NA)), class = "data.frame", row.names = c(NA, -3L))

Y <- structure(list(id = 1:3, number1 = c(4000L, 2500L, 7000L), number2 = c(6000L,
3300L, 8000L)), class = "data.frame", row.names = c(NA, -3L))

关于r - 检查列值是否在其他两个列值的(范围)之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52885425/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com