r - 使用条件将一列中的整个值替换为另一列
问题描述
我有“参考数据”,其中包含深度值和最多 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。像这样,我想更改“数据文件”第二列中的整个值。
到目前为止,我已经尝试过mapvalues
和match
. 但没有运气。
解决方案
我认为您想使用级别合并两个数据集。然后对于每个日期,您将拥有variable
and 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 )
推荐阅读
- html - 一天结束时自动更新记录,laravel
- c# - 多个并发请求之间的令牌共享 C#
- angularjs - AngularJS:加载带有绑定的 JSON 数据,不保留任何绑定
- python-3.x - Python记录新样式格式字符串
- java - 用千分尺公开 HTTP 端点
- facebook - Unable to save changes of Android platform in Facebook developer console
- blazor - Blazor 中是否有我可以修改的 App 对象?
- wordpress - WP自定义页面复制内容
- javascript - Three.JS - 单击时删除自定义对象
- c++ - CComboBoxEx 调试断言失败:afxcmn2.inl 第 334 行