2015-04-22 1 views
2

У меня есть кадр данных, который выглядит следующим образом:R генерировать случайные числовые для каждой строки

> head(df.data) 
Date Persnr AmountHolidays Season Holiday Temp 
1 201101 55312   0.0 Off FALSE 4.8 
2 201101 55316   3.0 Off FALSE 4.8 
3 201101 55325   0.0 Off FALSE 4.8 
4 201101 76065   0.0 Off FALSE 4.8 
5 201101 71928   1.0 Off FALSE 4.8 
6 201101 72558   0.5 Off FALSE 4.8 

> str(df.data) 
'data.frame': 490 obs. of 6 variables: 
$ Date   : Factor w/ 49 levels "201101","201102",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ Persnr  : int 55312 55316 55325 76065 71928 72558 73045 77214 121216 71951 ... 
$ AmountHolidays: num 0 3 0 0 1 0.5 0 0.5 2 0 ... 
$ Season  : chr "Off" "Off" "Off" "Off" ... 
$ Holiday  : chr "FALSE" "FALSE" "FALSE" "FALSE" ... 
$ Temp   : num 4.8 4.8 4.8 4.8 4.8 4.8 4.8 4.8 4.8 4.8 ... 

То, что я хотел сделать, это создать случайное значение двух чисел и вставить его за значения «Дата» , Эти два числа обозначают дни. Например, «20110112» или «20110106». Я использовал это уже:

df.data$Date<-paste(df.data$Date,sample(1:31,31),sep="") 

Результат:

> head(df.data) 
     Date Persnr AmountHolidays Season Holiday Temp 
1 20110117 55312   0.0 Off FALSE 4.8 
2 20110114 55316   3.0 Off FALSE 4.8 
3 2011018 55325   0.0 Off FALSE 4.8 
4 20110113 76065   0.0 Off FALSE 4.8 
5 2011017 71928   1.0 Off FALSE 4.8 
6 20110110 72558   0.5 Off FALSE 4.8 

Он работает, НО! моя проблема в том, что он не всегда генерирует два числовых значения. Значение 1 отображается как 1, а не 01. Значение 2 отображается как 2, а не 02 и т. Д.

Любые предложения, как это решить?

+0

Попробуйте 'Sprintf ('% S% 02d', уникальный (df.data $ Date), образец (1: 31,31))' – akrun

+0

В примере, df.data ' $ date '- это то же самое, изменилось ли это? – akrun

+1

Hi minhphongb. Просто для дальнейшего использования, пожалуйста, постарайтесь урезать свой вопрос до той части, которую вы не можете понять. Мы не хотим, чтобы возникла проблема XY, но в этом случае вы, вероятно, могли бы задать вопрос в соответствии с «Как мне форматировать 1 как« 01 »?» - может быть, немного больше деталей, чем это, но вы получите больше ответов и лучших ответов, если вопрос будет коротким и точным, но все еще охватывает все необходимые базы. – Dason

ответ

2

Попробуйте

paste0(df.data$Date, sprintf('%02d', sample(31))) 

 Смежные вопросы

  • Нет связанных вопросов^_^