r - 用随机值序列替换列中的值
问题描述
我有一个像下面这样的数据集,但有更多的行和列。
df <- data.frame(lat = c(19.3606, 19.2462, 19.3587),
long = c(-155.0684, -155.2582, -155.0274),
acq_date = c('2020-12-11','2020-12-11','2020-12-13')
)
我想用定义的时间范围内的随机日期替换 acq_date 列值。我找到了一些代码来创建随机日期(生成随机日期)并遍历行(对于 R 数据框中的每一行),但我没有看到数据框中填充了新日期。我在这里想念什么?
for(i in 1:nrow(df)) {
row <- df[i,]
row$acq_date <- sample(seq(as.Date('2020/12/15'), as.Date('2021/01/30'), by="day"), 1)
}
解决方案
问题是您将行从数据框中取出,对其进行编辑,但不要将其放回原处。
为了让你的代码工作,你可以做
for(i in 1:nrow(df)) {
df$acq_date[i] <- sample(seq(as.Date('2020/12/15'), as.Date('2021/01/30'), by="day"), 1)
}
但我建议通过以下方式一次性创建随机日期
randomDates <- sample(seq(as.Date('2020/12/15'), as.Date('2021/01/30'), by="day"), nrow(df))
然后通过将它们插入df
df$acq_date <- randomDates
推荐阅读
- list - 如何将未来列表设置为列表并更新 ListView
- ruby-on-rails - 在Rails 4中登录后无法更改会话变量值
- python - pandas to_sql sqlalchemy 与secure_transport的连接
- authentication - 无法使用springboot以编程方式绕过keycloak登录页面
- java - JAXB Xml 命名空间仅适用于少数字段
- python - 需要在 Django 中的单个框中添加图像和文本
- python - 为 geopandas 添加图例
- javascript - Javascript 在 Eclipse 中的行为似乎很奇怪
- python-3.x - 我的 if & elif 不适用于套接字(python 3)
- javascript - 加载图像 vue src url