替换超出范围的值引用r中每一行的另一个数据框

__

我发布此问题以改进当前方法。感谢您的帮助!

我有两个数据框。

数据A是我的测量结果:

           地点1地点2地点3地点4地点5地点6地点7 
1/1/2020 76 44 51 1 18 42 69 
1/2/2020 80 55 52 30 17 38 12 
1/3/2020 36 60 45 44 23 86 4 
1/4/2020 6 73 87 15 96 56 22 
1/5/2020 100 71 58 69 42 11 69 
1/6/2020 6 92 48 73 31 45 89 
1/7/2020 46 52 43 90 2 20 8 
1 / 8/2020 83 32 23 12 80 64 79 
1/9/2020 63 25 74 79 17 29 88 
1/10/2020 91 53 41 11 29 48 67
1/11/2020 82 3 32 56 56 61 35 
1/12/2020 55 66 69 88 75 78 88 
1/13/2020 75 52 74 78 30 17 41 
1/14/2020 43 72 24 85 10 75 32

数据B是我的范围数据。范围(最小值,最大值)不是根据数据A计算得出的。

           最小最大
1/1/2020 6 60 
1/2/2020 10 70 
1/3/2020 5 90 
1/4/2020 
4100 
1/5/2020 10100 1/6/2020 3 88 
1/7/2020 8 99 
1/8/2020 8 101 
1/9/2020 7 83 
1/10/2020 4 97 
1/11/2020 5 89 
1/12/2020 9 96 
1/13/2020 11 85 
1/14/2020 5 103

我要截断的数据是指数据B将超出范围的值替换为数据B中的最小值和最大值

这就是我尝试过的。

for (i in 1: 14){
  
  for (j in 1:7){
  
  if (A[i, j]< B[i,1]) {
    
    A[i,j]<-B[i,1]
    
  }
  
  else if (A[i, j]> B[i,2]) {
    
    A[i,j]<-B[i,2]
    
  }
  
  }
  
}

14是A中的行号。7是A中的列号。A和B的行号相同。

我有大量数据。谁能告诉我更快的方法?

感谢您的时间!

罗纳克·沙(Ronak Shah)

您可以基于日期将两个数据集结合起来并使用pminpmax并将数据保持在每个日期范围内。

library(dplyr)

A %>%
  rownames_to_column('Date') %>%
  inner_join(B %>% rownames_to_column('Date'), by = 'Date') %>%
  mutate(across(site1:site7, ~pmin(pmax(., min), max)))

#        Date site1 site2 site3 site4 site5 site6 site7 min max
#1   1/1/2020    60    44    51     6    18    42    60   6  60
#2   1/2/2020    70    55    52    30    17    38    12  10  70
#3   1/3/2020    36    60    45    44    23    86     5   5  90
#4   1/4/2020     6    73    87    15    96    56    22   4 100
#5   1/5/2020   100    71    58    69    42    11    69  10 100
#6   1/6/2020     6    88    48    73    31    45    88   3  88
#7   1/7/2020    46    52    43    90     8    20     8   8  99
#8   1/8/2020    83    32    23    12    80    64    79   8 101
#9   1/9/2020    63    25    74    79    17    29    83   7  83
#10 1/10/2020    91    53    41    11    29    48    67   4  97
#11 1/11/2020    82     5    32    56    56    61    35   5  89
#12 1/12/2020    55    66    69    88    75    78    88   9  96
#13 1/13/2020    75    52    74    78    30    17    41  11  85
#14 1/14/2020    43    72    24    85    10    75    32   5 103

数据

A <- structure(list(site1 = c(76L, 80L, 36L, 6L, 100L, 6L, 46L, 83L, 
63L, 91L, 82L, 55L, 75L, 43L), site2 = c(44L, 55L, 60L, 73L, 
71L, 92L, 52L, 32L, 25L, 53L, 3L, 66L, 52L, 72L), site3 = c(51L, 
52L, 45L, 87L, 58L, 48L, 43L, 23L, 74L, 41L, 32L, 69L, 74L, 24L
), site4 = c(1L, 30L, 44L, 15L, 69L, 73L, 90L, 12L, 79L, 11L, 
56L, 88L, 78L, 85L), site5 = c(18L, 17L, 23L, 96L, 42L, 31L, 
2L, 80L, 17L, 29L, 56L, 75L, 30L, 10L), site6 = c(42L, 38L, 86L, 
56L, 11L, 45L, 20L, 64L, 29L, 48L, 61L, 78L, 17L, 75L), site7 = c(69L, 
12L, 4L, 22L, 69L, 89L, 8L, 79L, 88L, 67L, 35L, 88L, 41L, 32L
)), class = "data.frame", row.names = c("1/1/2020", "1/2/2020", 
"1/3/2020", "1/4/2020", "1/5/2020", "1/6/2020", "1/7/2020", "1/8/2020", 
"1/9/2020", "1/10/2020", "1/11/2020", "1/12/2020", "1/13/2020", 
"1/14/2020"))

B <- structure(list(min = c(6L, 10L, 5L, 4L, 10L, 3L, 8L, 8L, 7L, 
4L, 5L, 9L, 11L, 5L), max = c(60L, 70L, 90L, 100L, 100L, 88L, 
99L, 101L, 83L, 97L, 89L, 96L, 85L, 103L)), class = "data.frame", 
row.names = c("1/1/2020", "1/2/2020", "1/3/2020", "1/4/2020", "1/5/2020", 
"1/6/2020", "1/7/2020", "1/8/2020", "1/9/2020", "1/10/2020", "1/11/2020",
 "1/12/2020", "1/13/2020", "1/14/2020"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用r中的另一个数据替换列表中的每一行

来自分类Dev

使用另一个数据框作为R中的键替换数据框中的所有值

来自分类Dev

计算一个数据帧的每一行与另一个数据帧中的所有其他行之间的欧式距离

来自分类Dev

检查数据帧的每一行是否包含在另一个数据帧中

来自分类Dev

从一个数据框中替换另一个数据中的值

来自分类Dev

用另一个数据框的值替换一个数据框的列值

来自分类Dev

用另一个数据框中的数据替换数据框中的数据

来自分类Dev

更改熊猫数据框中的值是另一个数据框中存在同一行

来自分类Dev

从另一个数据框中搜索(行值)数据

来自分类Dev

R根据另一个数据框中的匹配名称替换同名

来自分类Dev

用R中另一个数据框的值合并和替换一个数据框的值

来自分类Dev

将数据框中的值替换为另一个数据框中的值

来自分类Dev

如何根据R中的另一个数据框条目替换空白?

来自分类Dev

如果另一个数据框中缺少值,如何在一个数据框中删除一行?

来自分类Dev

我可以使用R中另一个数据框的对应值来划分数据框的每一列吗?

来自分类Dev

对于每一行,将特定列(由另一个数据框定义)中的值替换为向量中的值

来自分类Dev

用R中另一个数据框的特定值替换行中的值

来自分类Dev

替换数据框中的值仅与另一个数据框中匹配的值有关

来自分类Dev

用另一个数据框(不是合并)引用的值替换/替换一个数据框中的所有值

来自分类Dev

R-有条件地用另一个数据框中的值替换值

来自分类Dev

熊猫用另一个数据框的值替换一个数据框的值

来自分类Dev

用r中的另一个数据替换列表中的每一行

来自分类Dev

使用另一个数据框作为R中的键替换数据框中的所有值

来自分类Dev

熊猫高级问题:对于每一行,请从另一个数据框中获取复杂的信息

来自分类Dev

在另一个数据框中为每一行重复熊猫行的更有效方法?

来自分类Dev

对于数据框中的每一行,遍历另一个数据框

来自分类Dev

使用条件使用 R 中的另一个数据框替换数据框的值

来自分类Dev

对于数据框中的每一行,查找另一个数据框中是否有“关闭”行

来自分类Dev

Pandas - 用来自另一个数据帧的值填充一个数据帧的每一行

Related 相关文章

  1. 1

    用r中的另一个数据替换列表中的每一行

  2. 2

    使用另一个数据框作为R中的键替换数据框中的所有值

  3. 3

    计算一个数据帧的每一行与另一个数据帧中的所有其他行之间的欧式距离

  4. 4

    检查数据帧的每一行是否包含在另一个数据帧中

  5. 5

    从一个数据框中替换另一个数据中的值

  6. 6

    用另一个数据框的值替换一个数据框的列值

  7. 7

    用另一个数据框中的数据替换数据框中的数据

  8. 8

    更改熊猫数据框中的值是另一个数据框中存在同一行

  9. 9

    从另一个数据框中搜索(行值)数据

  10. 10

    R根据另一个数据框中的匹配名称替换同名

  11. 11

    用R中另一个数据框的值合并和替换一个数据框的值

  12. 12

    将数据框中的值替换为另一个数据框中的值

  13. 13

    如何根据R中的另一个数据框条目替换空白?

  14. 14

    如果另一个数据框中缺少值,如何在一个数据框中删除一行?

  15. 15

    我可以使用R中另一个数据框的对应值来划分数据框的每一列吗?

  16. 16

    对于每一行,将特定列(由另一个数据框定义)中的值替换为向量中的值

  17. 17

    用R中另一个数据框的特定值替换行中的值

  18. 18

    替换数据框中的值仅与另一个数据框中匹配的值有关

  19. 19

    用另一个数据框(不是合并)引用的值替换/替换一个数据框中的所有值

  20. 20

    R-有条件地用另一个数据框中的值替换值

  21. 21

    熊猫用另一个数据框的值替换一个数据框的值

  22. 22

    用r中的另一个数据替换列表中的每一行

  23. 23

    使用另一个数据框作为R中的键替换数据框中的所有值

  24. 24

    熊猫高级问题:对于每一行,请从另一个数据框中获取复杂的信息

  25. 25

    在另一个数据框中为每一行重复熊猫行的更有效方法?

  26. 26

    对于数据框中的每一行,遍历另一个数据框

  27. 27

    使用条件使用 R 中的另一个数据框替换数据框的值

  28. 28

    对于数据框中的每一行,查找另一个数据框中是否有“关闭”行

  29. 29

    Pandas - 用来自另一个数据帧的值填充一个数据帧的每一行

热门标签

归档