如何从匹配条件的行之后的行返回值

  • 本文关键字:之后 返回值 条件 r
  • 更新时间 :
  • 英文 :


如何从满足特定条件的行后面的行返回值?

例如,假设我有这个数据集

ID    Colour    Result
1     red       positive
2     blue      positive
3     NA        void
4     green     negative

转载于此:

structure(list(ID = c(1, 2, 3, 4),
Colour = c("red", "blue", NA, "green"),
Result = c("positive", "positive", "void", "negative")),
row.names = c(NA, -4L), class = c("data.frame"))

我想说,如果是Result == "void",那么紧接着告诉我Colour在这一行中的值是多少。

因此,如果我在这个数据集上运行这样一个函数,它应该返回green,因为它是属于void行之后的行的颜色。

我该怎么做?

使用which是自然的:

dataset$Colour[1+which(dataset$Result == 'void')]

评估为CCD_ 6。

filltidyr怎么样?

df <- read_table("ID    Colour    Result
1     red       positive
2     blue      positive
3     NA        void
4     green     negative")
> df %>% fill(Colour, .direction = "up")
# A tibble: 4 x 3
ID Colour Result  
<dbl> <chr>  <chr>   
1     1 red    positive
2     2 blue   positive
3     3 green  void    
4     4 green  negative

或者,如果需要基于Result列,则dplyr:中的lead

df %>% 
mutate(Colour = ifelse(
Result == "void", 
lead(Colour), 
Colour))
# A tibble: 4 x 3
ID Colour Result  
<dbl> <chr>  <chr>   
1     1 red    positive
2     2 blue   positive
3     3 green  void    
4     4 green  negative

最新更新