将非缺失日期转换为 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
我有一个数据框,我想根据条件将每个 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