gpt4 book ai didi

r - 使用数据表屏蔽/过滤 R 中的另一个数据表

转载 作者:行者123 更新时间:2023-12-04 11:49:05 24 4
gpt4 key购买 nike

我有一个数据表,A喜欢:

year          location    sigma_NN_1 sigma_NN_2 sigma_NN_3
2076 43.59375_-116.78125 1.4681173 1.664289 1.735974
2077 43.59375_-116.78125 1.3798515 1.550524 1.551269
2078 43.59375_-116.78125 0.7934367 1.064248 1.177981
2079 43.59375_-116.78125 1.8235574 1.991018 2.288402
2080 43.59375_-116.78125 2.5560329 2.578093 2.589334

我想用它来屏蔽另一个数据表,其中 sigma 的值低于阈值,假设为 2。假设我的第二个数据表是 B
year            location       location_NN_1      location_NN_2      location_NN_3
2076 43.59375_-116.78125 41.15625_-90.65625 41.21875_-90.65625 41.15625_-90.65625
2077 43.59375_-116.78125 43.34375_-78.15625 43.34375_-78.21875 43.28125_-78.15625
2078 43.59375_-116.78125 41.34375_-90.78125 41.21875_-90.65625 41.53125_-73.96875
2079 43.59375_-116.78125 43.53125_-116.78125 41.34375_-90.78125 41.71875_-74.15625
2080 43.59375_-116.78125 41.34375_-90.78125 41.96875_-86.21875 41.21875_-90.65625

所以,我想要像 B[A<2] 这样的东西,但显然这行不通,否则,我不会在这里。

有什么建议?

预期输出:

输出
year            location       location_NN_1      location_NN_2      location_NN_3
2076 43.59375_-116.78125 41.15625_-90.65625 41.21875_-90.65625 41.15625_-90.65625
2077 43.59375_-116.78125 43.34375_-78.15625 43.34375_-78.21875 43.28125_-78.15625
2078 43.59375_-116.78125 41.34375_-90.78125 41.21875_-90.65625 41.53125_-73.96875
2079 43.59375_-116.78125 43.53125_-116.78125 41.34375_-90.78125 NA
2080 43.59375_-116.78125 NA NA NA

目标是在数据表 A中找到对应sigma的位置。小于 2。

最佳答案

我们可以使用基R子集来识别B的合适单元格。并将它们替换为 NA .这种方法需要 A 中列的顺序和 B是一样的。

我们可以在 dfa 上使用一个简单的条件语句找到 sigma 值不小于 2 的单元格。由于我们不想将条件应用于年份和条件列,我们在应用条件之前将它们子集:

!(dfa[-c(1,2)] < 2)
sigma_NN_1 sigma_NN_2 sigma_NN_3
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE
[4,] FALSE FALSE TRUE
[5,] TRUE TRUE TRUE

这将返回一个逻辑矩阵,我们可以使用它来子集 B替换值。这里发生的是我们子集 B两次:首先我们忽略 year 和 location 列只得到 location 列,然后我们使用较早的条件选择匹配的 sigma 值不小于 2 的行并插入 NA进去:
dfb[-c(1,2)][!(dfa[-c(1,2)] < 2)] <- NA
dfb

year location location_NN_1 location_NN_2 location_NN_3
1 2076 43.59375_-116.78125 41.15625_-90.65625 41.21875_-90.65625 41.15625_-90.65625
2 2077 43.59375_-116.78125 43.34375_-78.15625 43.34375_-78.21875 43.28125_-78.15625
3 2078 43.59375_-116.78125 41.34375_-90.78125 41.21875_-90.65625 41.53125_-73.96875
4 2079 43.59375_-116.78125 43.53125_-116.78125 41.34375_-90.78125 <NA>
5 2080 43.59375_-116.78125 <NA> <NA> <NA>

关于r - 使用数据表屏蔽/过滤 R 中的另一个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com