首页 > 解决方案 > 根据下一个 R 替换 df 中的值

问题描述

我有一个这样的df

             missing_1  missing_4  missing_5
1:               7dzx                    
2:        7dzxALA1085       ALA      1085
3: 7dzxALA1085ALA1085       ALA      1085
4:               7dzx                    
5:         7dzxALA156       ALA       156
6:   7dzxALA156ALA156       ALA       156

当 missing_4 和 missing_5 为空时,我想用该列中的以下值替换该值。所以它应该变成:

           missing_1 missing_4 missing_5
1:               7dzx       ALA      1085      
2:        7dzxALA1085       ALA      1085
3: 7dzxALA1085ALA1085       ALA      1085
4:               7dzx       ALA       156     
5:         7dzxALA156       ALA       156
6:   7dzxALA156ALA156       ALA       156

我正在考虑一个 for 循环,但我没有足够的技能来实现它。谢谢!

标签: rdataframereplace

解决方案


我们可以fill使用tidyr

library(dplyr)
library(tidyr)
df1 %>%
    fill(c(missing_4, missing_5), .direction = "updown")

-输出

             missing_1 missing_4 missing_5
1:               7dzx       ALA      1085
2:        7dzxALA1085       ALA      1085
3: 7dzxALA1085ALA1085       ALA      1085
4:               7dzx       ALA       156
5:         7dzxALA156       ALA       156
6:   7dzxALA156ALA156       ALA       156

数据

df1 <- structure(list(missing_1 = c("7dzx", "7dzxALA1085", "7dzxALA1085ALA1085", 
"7dzx", "7dzxALA156", "7dzxALA156ALA156"), missing_4 = c(NA, 
"ALA", "ALA", NA, "ALA", "ALA"), missing_5 = c(NA, 1085L, 1085L, 
NA, 156L, 156L)), class = c("data.table", "data.frame"), row.names = c(NA, 
-6L)

推荐阅读