2015-04-22 93 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 $日期),樣品(1:31,31))' – akrun

+0

在該示例中,'df.data $ date'是一樣的,它會改變嗎? – akrun

+1

嗨minhphongb。僅供將來參考,請嘗試將您的問題修正至您無法弄清楚的部分。我們不希望出現XY問題的情況,但在這種情況下,您可能會發布一條問題:「如何將1格式化爲'01'?」 - 也許比這個更詳細一點,但如果問題很短並且重點仍然涵蓋所有必要的基礎,你會得到更多的答覆和更好的答覆。 – Dason

回答

2

嘗試

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