1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
# Création de la première matrice de données
A <- data.frame(d2404 = c(12, 5, 8, NA, NA), d2904 = c(12, 5, 8, 10, NA), d0505 = c(12, 5, 8, 10, 2))
# Test sur la date de première apparition
test_premiere_apparition <- function(v)
{
w <- as.numeric(v)
test <- (!(duplicated(w))) * (!(is.na(w))) # va renvoyer 1 dans le cas où la valeur rencontrée apparait pour la 1ère fois et qu'il ne s'agit pas de "NA"
out <- which(test == 1)
return(out)
}
S <- apply(A, 1, test_premiere_apparition) # Pour chaque ligne de A, S va contenir le numéro de la colonne de A dans laquelle on trouve cette valeur pour la 1ère fois
# Création de la matrice de sortie
B <- rep(0, dim(A)[1]*2)
dim(B) <- c(dim(A)[1], 2)
names <- gsub("d", "", colnames(A)) # récupération des dates dans les en-têtes de colonnes de A en supprimant le préfixe "d"
for(k in 1:(dim(B)[1]))
{
B[k, 1] <- A[k, S[k]]
B[k, 2] <- names[S[k]]
}
B <- as.data.frame(B)
colnames(B) <- c("dose", "date")
B
# dose date
# 12 2404
# 5 2404
# 8 2404
# 10 2904
# 2 0505 |
Partager