首页 > 解决方案 > 使用条件将一列中的整个值替换为另一列

问题描述

我有“参考数据”,其中包含深度值和最多 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

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

到目前为止,我已经尝试过mapvaluesmatch. 但没有运气。

标签: rreplacematchrename

解决方案


我认为您想使用级别合并两个数据集。然后对于每个日期,您将拥有variableand depth,并且您可以使用它做您想做的事情(包括按照您level的建议用覆盖depth)。

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 包于 2021-07-14 创建 (v2.0.0 )


推荐阅读