[英]Assign a value to previous rows based on a condition in a group using R
我有一個數據框,按groupID和日期排序
> d1 <- data.frame(groupID = c(1,1,1,1,1,3,3,3,3),
date = c(1,2,3,4,5,6,7,8,9),
value = c(1,1,25,1,1,25,1,25,1))
>d1
groupID date value
1 1 1
1 2 1
1 3 25
1 4 1
1 5 1
3 6 25
3 7 1
3 8 25
3 9 1
我想為每個組創建一個新列,其日期的最新值為25。
我打算看下面的輸出
groupID date value newvalue
1 1 1 3
1 2 1 3
1 3 25 3
1 4 1 NA
1 5 1 NA
3 6 25 6
3 7 1 8
3 8 25 8
3 9 1 NA
您可以使用dplyr / tidyr執行此操作
library(dplyr)
library(tidyr)
df<- data.frame(groupID = c(1,1,1,1,1,3,3,3,3),
date = c(1:9),
value = c(1,1,25,1,1,25,1,25,1))
df <- df %>%
group_by(groupID) %>%
mutate(newvalue = ifelse(value == 25,date,NA)) %>%
fill(newvalue, .direction = "up")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.