R为每一行生成随机数字
R generate random numeric for each row
我有一个如下所示的数据框:
> 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 ...
我想做的是创建两个数字的随机值并将其粘贴到 "Date" 值后面。这两个数字代表天数。
例如“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 等等
有什么解决办法的建议吗?
尝试
paste0(df.data$Date, sprintf('%02d', sample(31)))
我有一个如下所示的数据框:
> 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 ...
我想做的是创建两个数字的随机值并将其粘贴到 "Date" 值后面。这两个数字代表天数。 例如“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 等等
有什么解决办法的建议吗?
尝试
paste0(df.data$Date, sprintf('%02d', sample(31)))