R Найти минимальное значение даты для столбца данных - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть следующий фрейм данных:

df <- data.frame(
                "DateValue" = c("2016-07-01", "2016-07-02", "2016-07-03", 
                "2016-07-04","2016-07-05", "2016-07-06","2016-07-07"),  
                "Age1" = c(rep(NA, 2), seq(14,18,2), NA, NA), 
                "Age2" = c(rep(NA, 1), seq(18,28,2)),  
                "Wages"= c(1000,1200,2100,5000,3000,2220,300)
)

Я пытаюсь найти минимальные даты для всех столбцов, начинающихся с "Возраст". Ниже приведен типичный вывод:

 output <- ['2016-07-03', '2016-07-02']

Я рассмотрел все решения SO, которые предоставляют максимальные и минимальные даты для Dataframe с несколькими идентификаторами, используя пакет dplyr, но просто не могу понять, как применить то же самое к моемуситуация. Ниже находится ТАК сообщение, которое связано. Все решения для похожих проблем используют один и тот же пакет:

Сохраняет только самую последнюю дату для каждого идентификатора во фрейме данных

1 Ответ

1 голос
/ 30 сентября 2019

Подробности смотрите в комментариях:

df <- data.frame(
  "DateValue" = c("2016-07-01", "2016-07-02", "2016-07-03", 
                  "2016-07-04","2016-07-05", "2016-07-06","2016-07-07"),  
  "Age1" = c(rep(NA, 2), seq(14,18,2), NA, NA), 
  "Age2" = c(rep(NA, 1), seq(18,28,2)),  
  "Wages"= c(1000,1200,2100,5000,3000,2220,300)
)

#convert to date
df$DateValue<-as.Date(df$DateValue)
library(dplyr)
#select the proper columns, filter columns and return min date
answer<-sapply(df %>% select(starts_with("Age")),  function(x){ min(df$DateValue[!is.na(x)])})
#convert from serial number back to a date
answer<-as.Date(answer, "1970-01-01")
answer

Age1         Age2 
"2016-07-03" "2016-07-02" 
...