0
votes

Trouver une colonne avec la date la plus proche de R avec dplyr

J'ai une trame de données avec une liste de sujets et un ensemble de dates: xxx pré>

Je souhaite trouver le nom de la dernière colonne que l'unique est supérieur à. Donc, par exemple, le résultat de Sujet 001 code> doit être date3 code>. P>

Je n'ai pas encore de solution de travail, mais c'est ce que je J'essaie d'utiliser pour l'instant: P>

colnames(DF[, 2:5])[apply(DF,1,which.max(DF[i] - DF$UniqueDate)]


0 commentaires

3 Réponses :


0
votes

Voici une solution utilisant essentiellement l'ensemble du tout Tidyverse code>: xxx pré>

La dernière ligne est un peu de désordre - j'espère que vous pouvez voir ce qui se passe ici. p>

serait intéressé à voir une solution de base r à cela. p>

DATA H3>
df <-
  tribble(~Subject,    ~Date1,       ~Date2,       ~Date3,      ~Date4,      ~Date5,     ~UniqueDate,
          001,        "12Mar02",     "03Apr02",     "08May02",    "09Jun02",    "22Jul02",   "02June02",
          002,        "15Feb05",     "03Mar05",     "18Apr05",    "01May05",    "16Jun05",   "22May05",
          100,        "22Jan09",     "01Feb09",     "28Mar09",    "10Apr09",    "21May09",   "29Jan09")


0 commentaires

0
votes

avec vos données.frame: xxx pré>

Tout d'abord, vous souhaitez activer les colonnes de date dans un formulaire R reconnaît des dates: p>

d$result <- apply(d, 1, function(x){
  sum(x["UniqueDate"] > x[2:6])
})


0 commentaires

0
votes

Pour des raisons d'exhaustivité, voici également une solution qui utilise un em> joindre em> après avoir remodelé les données au format long: xxx pré> blockQuote>

library(data.table)
DT <- fread("
Subject    Date1       Date2       Date3      Date4      Date5     UniqueDate
001        12Mar02     03Apr02     08May02    09Jun02    22Jul02   02June02
002        15Feb05     03Mar05     18Apr05    01May05    16Jun05   22May05
100        22Jan09     01Feb09     28Mar09    10Apr09    21May09   29Jan09")


0 commentaires