r - For - 循环遍历行和列,填充一个空数据帧,具体取决于另一个数据帧 (r) 的值
问题描述
我尝试用 1 - 3 的值填充一个空数据框 (pen_NA),具体取决于另一个数据框 (pen_2) 中值的高度。没有错误消息,但代码也没有完成这项工作。有一些提示吗?
我的数据框如下所示: Trait1 Trait2 ... Plant.nr.1 value value ... Plant.nr.2 value value ... ...
for (j in 1:ncol(pen_NA)) {
for (i in which(is.na(pen_NA[,j]))) {
if (pen_2[i,j] > 3)
{pen_NA[i,j]== 1}
else if (pen_2[i,j] < 3)
{pen_NA[i,j]== 2}
else if (pen_2[i,j] == 3)
{pen_NA[i,j]== 3}
else
pen_NA[i,j]== pen_NA[i,j]
}}
解决方案
如果 Trait2 为 1,我们将 Trait1 的缺失值归为 1,如果 Trait2 为零,则使用 2:
library(tidyverse)
traits_a <- tibble(Plant_id = seq(4), Trait1 = c(NA,NA,0,0))
traits_a
#> # A tibble: 4 x 2
#> Plant_id Trait1
#> <int> <dbl>
#> 1 1 NA
#> 2 2 NA
#> 3 3 0
#> 4 4 0
traits_b <- tibble(Plant_id = seq(4),Trait2 = c(1,0,0,1))
traits_b
#> # A tibble: 4 x 2
#> Plant_id Trait2
#> <int> <dbl>
#> 1 1 1
#> 2 2 0
#> 3 3 0
#> 4 4 1
traits_a %>%
left_join(traits_b) %>%
mutate(
Trait1 = case_when(
!is.na(Trait1) ~ Trait1,
Trait2 == 1 ~ 1,
Trait2 == 0 ~ 2
)
)
#> Joining, by = "Plant_id"
#> # A tibble: 4 x 3
#> Plant_id Trait1 Trait2
#> <int> <dbl> <dbl>
#> 1 1 1 1
#> 2 2 2 0
#> 3 3 0 0
#> 4 4 0 1
由reprex 包于 2021-11-09 创建(v2.0.1)
推荐阅读
- css - FullCalendar 调度程序,fullcalendar.print.css 的问题
- c - 静态 C 库中的选择性变量定义
- javascript - 在对象数组中查找重复的集合值
- python - 烧瓶、wsgi 和部署
- php - 我的分页在 codeigniter 控制器中不起作用
- c# - C# Directory.GetCurrentDirectory() 返回带有 NUnit 的 system32
- javascript - 如何将时间/日期戳附加到 html 文件中的文件名
- c# - HoloLens 无法通过 BT 和 TCP 发送或接收数据
- python - Pytorch 保存模型用户警告:无法检索网络类型容器的源代码
- android - 如何将相机图像传递给另一个活动?