如何从满足特定条件的行后面的行返回值?
例如,假设我有这个数据集
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。
fill
和tidyr
怎么样?
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