使用条件将一列中的整个值替换为另一列

Replace whole values in a column with another column using condition

我有“参考数据”,其中包含深度值和相应级别,最多 n 个级别,如下所示;

depth   levels
0.06    1
0.19    2
0.33    3
0.48    4
0.63    5
0.8     6

我在 csv 中有另一个“数据文件”,如下所示。

Date    Levels  variable
3-Jan   1       15.25
3-Feb   5       13.09
3-Mar   25      14.21
3-Apr   26      13.65
3-May   27      12.79
3-Jun   27      15.65

在这个“数据文件”中,我在第 3 列中有水平,需要根据“参考数据”进行更改。这意味着如果“数据文件”中的级别为 1,我需要用“参考数据”中相应的深度值替换该值“1”,即 0.06。像那样,我想更改“数据文件”第二列中的所有值。

到目前为止,我已经尝试了 mapvaluesmatch。但是运气不好。

我认为您想使用关卡合并两个数据集。然后对于每个日期你都会有 variabledepth,你可以用它做你想做的事(包括用 depth 覆盖 level,正如你建议的那样)。

library(tidyverse)
reference_data <- read_table("depth   levels
0.06    1
0.19    2
0.33    3
0.48    4
0.63    5
0.8     6")

data_file <- read_table("Date    Levels  variable
3-Jan   1       15.25
3-Feb   5       13.09
3-Mar   25      14.21
3-Apr   26      13.65
3-May   27      12.79
3-Jun   27      15.65")

data_file %>% 
  left_join(reference_data, by = c("Levels" = "levels"))
#> # A tibble: 6 x 4
#>   Date  Levels variable depth
#>   <chr>  <dbl>    <dbl> <dbl>
#> 1 3-Jan      1     15.2  0.06
#> 2 3-Feb      5     13.1  0.63
#> 3 3-Mar     25     14.2 NA   
#> 4 3-Apr     26     13.6 NA   
#> 5 3-May     27     12.8 NA   
#> 6 3-Jun     27     15.6 NA

reprex package (v2.0.0)

于 2021-07-14 创建