将非缺失日期转换为 R 中缺失的日期

Convert non-missing date to missing in R

我有一个数据框,我想根据条件将每个 ID 的第一行的日期列替换为缺失。

library(data.table)
table1 <- read.table("
id date1      var
1  01/02/1992  2
1  02/03/1992  1
1  01/03/1992  2
2  06/05/1992  1
", header=T, stringsAsFactors=F)

date1 <- as.Date(date1)
table1 <- data.frame(id,date1,var)

这似乎是一项简单的任务,我已经尝试了几个代码,其中 none 个有效。我是 R 的新手,所以请原谅我的行人问题。谢谢!

如果我们想将 Date 的第一个值替换为 NA,则按 'id' 进行分组并使用 replace

library(dplyr)
table1 <- table1 %>% 
    group_by(id) %>% 
    mutate(date1 = replace(date1, 1, NA))

如果'date1'没有订购

table1 %>%
    arrange(id, as.Date(date1, '%d/%m/%Y')) %>%
    group_by(id) %>%
     mutate(date1 = replace(date1, 1, NA))

或使用data.table

library(data.table)
setDT(table1)[, date1 := replace(date1, 1, NA), id]

您可以使用 duplicated :

table1$date1[!duplicated(table1$id)] <- NA
table1

#  id      date1 var
#1  1       <NA>   2
#2  1 02/03/1992   1
#3  1 01/03/1992   2
#4  2       <NA>   1