用另一行的值替换一行的值

问题描述 投票:0回答:1

波<-c(1, 2, 3, 1, 2, 3, 1, 2, 1, 2)

id <-1:10

var1 <-c(6.341464, 13.206567, NA, 5.272296,2.746650, NA, 1.684472,1.874200, 15.861959, 3.938463)

var2 <-c(6.341464, 13.206567, NA, 5.272296,2.746650, NA, 1.684472,1.874200, 15.861959, 3.938463)

var3 <-c(6.341464, 13.206567, NA, 5.272296,2.746650, NA, 1.684472,1.874200, 15.861959, 3.938463)

df<- data.frame(wave,id,var1,var2,var3)

输出:df

如何用第 2 波的值替换第 3 波中的 NA?

它应该复制第二波的所有值(NA 也是)

我尝试了循环但没有成功!

r dataframe replace na rowwise
1个回答
0
投票

你可以使用

fill
这样的向下方向:

library(dplyr)
library(tidyr)
df %>%
  fill(var1:var3, .direction = 'down')
#>    wave id      var1      var2      var3
#> 1     1  1  6.341464  6.341464  6.341464
#> 2     2  2 13.206567 13.206567 13.206567
#> 3     3  3 13.206567 13.206567 13.206567
#> 4     1  4  5.272296  5.272296  5.272296
#> 5     2  5  2.746650  2.746650  2.746650
#> 6     3  6  2.746650  2.746650  2.746650
#> 7     1  7  1.684472  1.684472  1.684472
#> 8     2  8  1.874200  1.874200  1.874200
#> 9     1  9 15.861959 15.861959 15.861959
#> 10    2 10  3.938463  3.938463  3.938463

创建于 2023-03-18 与 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.