我的数据
set.seed(123)
df <- data.frame(loc = rep(1:5, each = 5),value = sample(0:4, 25, replace = T))
a <- c("x","y","z","k")
df$id <- ifelse(df$value == 0, "no.data", sample(a,1))
head(df)
loc value id
1 1 1 z
2 1 3 z
3 1 2 z
4 1 4 z
5 1 4 z
6 2 0 no.data
我没有数据的行,id
和 value
列有 no.data
和 0
。对于没有数据的所有行(id == no.data
和 value == 0
),我想复制 value
和前一行的 id
。
loc value id
1 1 1 z
2 1 3 z
3 1 2 z
4 1 4 z
5 1 4 z
6 2 4 z
类似于:
df %>% group_by(loc) %>% mutate(value = ifelse(value == 0, copy the value from preceding row), id = ifelse(id== "no.data", copy the id from preceding row ))
最佳答案
我们可以将 0s
替换为 NA
,然后进行填充
library(tidyverse)
library(naniar)
df %>%
replace_with_na(replace = list(value = 0, id = "no.data")) %>%
fill(value, id)
关于r - 如果满足条件,则复制前一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374197/