2017-05-13 2 views
-1

Comment créer une trame de données avec douze lignes et trois colonnes. Premier à sélectionner l'année au hasard dans la gamme 3000: 9999. Les exigences des trois colonnes sont: La première variable (colonne) doit être des dates (dernier jour de chaque mois de l'année sélectionnée) la deuxième variable doit être non vide, et unique, les chaînes (caractères), et la troisième variable devrait être permutation aléatoire des entiers 1:12?lubrifier la date de l'année dans un bloc de données

Existe-t-il un moyen de randomiser l'année dans la fonction as.Date ou tout autre moyen de le faire? Comment puis-je utiliser lubrifier pour obtenir le dernier jour de chaque mois?

Répondre

1

Que diriez-vous quelque chose comme ça

library(lubridate) 

dates <- ceiling_date(date(paste(sample(3000:9999, 1), 1:12, "1", sep = "-")), "months") - 1 
strings <- sample(LETTERS, 12) 
numbers <- sample(1:12, 12) 

df <- data.frame(dates, strings, numbers) 

> print(df) 
     dates strings numbers 
1 9366-01-31  U  6 
2 9366-02-28  J  2 
3 9366-03-31  T  5 
4 9366-04-30  G  1 
5 9366-05-31  I  7 
6 9366-06-30  L  10 
7 9366-07-31  H  8 
8 9366-08-31  R  3 
9 9366-09-30  B  11 
10 9366-10-31  V  12 
11 9366-11-30  E  4 
12 9366-12-31  F  9 
+0

merci! pourquoi es-tu fucntion ceiling_date? ne prend-il pas un objet date-heure et l'arrondit à la valeur entière la plus proche de l'unité de temps spécifiée? – xxyyzz

+0

C'est pour obtenir le dernier jour du mois. Comme tous les mois n'ont pas la même date finale, j'ai trouvé plus facile de simplement générer le premier jour du mois comme date, puis de l'arrondir. A propos, 'ceiling_date' arrondit à la limite supérieure (le premier jour du mois suivant), vous devez donc en soustraire une pour obtenir le dernier jour du mois. – Sraffa

+0

Gotcha! Merci. C'est en fait un moyen plus facile d'atteindre le dernier jour du mois. – xxyyzz