0
votes

Utilisez Ifelse pour attribuer la date à un nouveau facteur

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)


0 commentaires

4 Réponses :


0
votes

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


1 commentaires

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"



0
votes

peu d'un peu délicat. Dans base-r xxx

données: xxx


2 commentaires

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))



0
votes

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: XXX PRE>

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)


0 commentaires

0
votes

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"))


0 commentaires