J'ai une trame de données avec une liste de sujets et un ensemble de dates: Je souhaite trouver le nom de la dernière colonne que l'unique est supérieur à. Donc, par exemple, le résultat de Je n'ai pas encore de solution de travail, mais c'est ce que je J'essaie d'utiliser pour l'instant: P> Sujet 001 code> doit être
date3 code>. P>
colnames(DF[, 2:5])[apply(DF,1,which.max(DF[i] - DF$UniqueDate)]
3 Réponses :
Voici une solution utilisant essentiellement l'ensemble du tout 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> Tidyverse code>:
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")
avec vos données.frame: 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])
})
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: 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")