Преобразование даты без пропуска в дату, отсутствующую в R - PullRequest
2 голосов
/ 02 августа 2020

У меня есть фрейм данных, и я хочу заменить столбец даты только первой строки каждого идентификатора на отсутствующий в зависимости от условия.

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)

Это похоже на простую задачу, и я попробовал несколько кодов и ни один из них не работает. Я новичок в R, извините, пожалуйста, за пешеходный вопрос. Спасибо!

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Если мы хотим заменить первое значение Date на NA, то сгруппируйте его по id и используйте replace

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

Если дата1 не заказана

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]
0 голосов
/ 02 августа 2020

Вы можете использовать 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
...