簡體   English   中英

使用R根據組中的條件將值分配給先前的行

[英]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 

我曾嘗試根據列和if-else中的條件將值分配給組 ,但是我的嘗試沒有成功。

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM