R 为每一行生成随机数字

标签 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            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,等等。

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

最佳答案

尝试

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

关于R 为每一行生成随机数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29797991/

相关文章:

r - ggplot2 绘制比数据框中更多的点,geom_point + facet_grid

r - 如何在R中绘制3D堆叠直方图?

c++ - 如何区分自动获取剪贴板数据和实际内容粘贴?

R-paste() 函数中的新行

r - 如何将包含十进制数字的因子列转换为数字?

重新排列数据框中的行

r - "Error: not compatible with STRSXP"与 rvest 的 submit_form

search - vi 搜索复制粘贴搜索复制

python - pandas 每日平均值,pandas.resample

Iphone开发-如何显示数字键盘?