J'aimerais affecter différentes dates au nouveau facteur dans un Dataframe dépendant de l'année de l'observation particulière. Voici ce que j'ai:
Date Location Reference 2014-10-30 AB1 2014-08-14 2014-09-02 AB3 2014-08-14 2015-10-15 AB1 NA 2016-11-02 AB4 2016-09-16 etc. (191K observations)
4 Réponses :
Cela m'a attrapé aussi la première fois que je devais faire la même chose.
df <- read.table(text='Date Location
2014-10-30 AB1
2014-09-02 AB3
2015-10-15 AB1
2016-11-02 AB4',header=T,stringsAsFactors=F)
df <- df %>%
mutate(
Reference=ifelse(
row_number() == 3,
structure(NA_real_, class="Date"),
Date
)
)
df
Date Location Reference
1 2014-10-30 AB1 2014-10-30
2 2014-09-02 AB3 2014-09-02
3 2015-10-15 AB1 <NA>
4 2016-11-02 AB4 2016-11-02
Limey, j'ai ajouté votre code à l'étape "DF $ Emplacement <- na" de Daniel, mais a reçu cette erreur: ne sais pas comment convertir "valeur" en classe "Date"
peu d'un peu délicat. Dans base-r données: p>
Daniel, merci pour la réponse. J'ai exécuté votre code par reçu cette erreur de la dernière étape: le nombre d'éléments à remplacer n'est pas un multiple de longueur de remplacement
Voici ce que j'ai pour le code: Records2 $ Aerialdates <- AS.Date (C ("2014-08-28", "2017-10-26", "2019-06-19")) Records2 $ réf.Year <- Format (Records2 $ Aerialdates, "% Y") Records2 $ dates2 $ dates.Year <- Format (Date d'enregistrement2 $, "% Y") Enregistrements2 $ Localisation <-na Records2 $ Emplacement [Records2 $ Dates.year% in% Records2 $ Réf. .year] <-do.call (C, labaply (Dates de Dates.Cooks2 $.Year, Fonction (X) Coller))
Vous pouvez utiliser Tairyverse et Lubridate (pour extraire facilement l'année). Spécifiquement, vous pouvez utiliser les méthodes rejoindre code> pour fusionner la date à la référence au lieu de ifelse code>. Faire une colonne d'année pour aligner les données l'aidera. Voir ci-dessous: library(lubridate)
# add year column to year reference
year_ref <- mutate(reference, year = year(Reference))
# add year column to data and left join to reference
data_with_ref <- data %>%
mutate(year = year(Date)) %>%
left_join(year_ref, by = "year") %>%
select(-year)
SOLUTION DE BASE R:
df <- data.frame(Date = c("2014-10-30", "2014-09-02", "2015-10-15", "2016-11-02"),
Location = c("AB1", "AB3", "AB1", "AB4"))
reference <- data.frame(Reference = c("2014-08-14", "2016-09-16"))