R为每行生成随机数字

R为每行生成随机数字,r,paste,numeric,R,Paste,Numeric,我有一个如下所示的数据框: > 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

我有一个如下所示的数据框:

> 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="")
它是有效的,但是!我的问题是它并不总是生成两个数值。值1显示为1,而不是01。值2显示为2,而不是02等

有什么建议可以解决这个问题吗?

试试看

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

请尝试
sprintf(“%s%02d”),唯一(df.data$Date),示例(1:31,31))
Hi minhphongb。仅供将来参考,请尽量把你的问题缩小到你想不出来的部分。我们不希望出现XY问题,但在这种情况下,您可能会发布一个问题,大意是“如何将1格式化为'01'?”——可能会比这更详细一些,但如果问题简短、切中要害,但仍然涵盖了所有必要的基础,您将得到更多的答复和更好的答复。或者
粘贴(df.data$Date,sprintf('%02d',sample(1:31,31)),sep=“”)
一个更好的例子会更容易理解test@akun你的意思可能是
paste0(df.data$Date,sprintf('%02d',sample(31))
。哦,我们同时发布了:)@akrun,谢谢。你的建议对我有用。
paste0(df.data$Date, sprintf('%02d', sample(31)))