r - 从日期范围中提取日期并赋值
问题描述
我有以下数据框:
Date_from <- c("2013-01-01","2013-01-04")
Date_to <- c("2013-01-03","2013-01-06")
Parameter <- c("Par1","Par1","Par2","Par2")
conc<-c("1.5","2.5","1.5","1.8")
metals<-data.frame(Date_from,Date_to,Parameter,conc)
metals$Date_from<-as.Date(metals$Date_from)
metals$Date_to<-as.Date(metals$Date_to)
metals$conc<-as.numeric(as.character(metals$conc))
我需要做的是提取每个参数的每个日期范围内的日期,并将浓度值分配给该范围内的每个日期,并将所有这些信息放在一个新的数据框中。结果应如下所示:
Date Parameter conc
2013-01-01 Par1 1.5
2013-01-02 Par1 1.5
2013-01-03 Par1 1.5
2013-01-04 Par1 2.5
2013-01-05 Par1 2.5
2013-01-06 Par1 2.5
2013-01-01 Par2 1.5
2013-01-02 Par2 1.5
2013-01-03 Par2 1.5
2013-01-04 Par2 1.8
2013-01-05 Par2 1.8
2013-01-06 Par2 1.8
解决方案
这是一个选项tidyverse
。通过将'Date_from' 影响到 'Date_to' ( )创建一个list
列,删除不需要的列 ( ) 和seq
map
select
unnest
library(tidyverse)
metals %>%
mutate(Date = map2(Date_from, Date_to, seq, by = "1 day")) %>%
select(-Date_from, -Date_to) %>%
unnest %>%
select(Date, Parameter, conc)
# Date Parameter conc
#1 2013-01-01 Par1 1.5
#2 2013-01-02 Par1 1.5
#3 2013-01-03 Par1 1.5
#4 2013-01-04 Par1 2.5
#5 2013-01-05 Par1 2.5
#6 2013-01-06 Par1 2.5
#7 2013-01-01 Par2 1.5
#8 2013-01-02 Par2 1.5
#9 2013-01-03 Par2 1.5
#10 2013-01-04 Par2 1.8
#11 2013-01-05 Par2 1.8
#12 2013-01-06 Par2 1.8
或者它可以用base R
lst <- Map(seq, MoreArgs = list(by = "1 day"), metals$Date_from, metals$Date_to)
out <- cbind(Date = do.call(c, lst), metals[rep(seq_len(nrow(metals)),
lengths(lst)), c("Parameter", "conc")])
row.names(out) <- NULL
out
# Date Parameter conc
#1 2013-01-01 Par1 1.5
#2 2013-01-02 Par1 1.5
#3 2013-01-03 Par1 1.5
#4 2013-01-04 Par1 2.5
#5 2013-01-05 Par1 2.5
#6 2013-01-06 Par1 2.5
#7 2013-01-01 Par2 1.5
#8 2013-01-02 Par2 1.5
#9 2013-01-03 Par2 1.5
#10 2013-01-04 Par2 1.8
#11 2013-01-05 Par2 1.8
#12 2013-01-06 Par2 1.8
推荐阅读
- class - 无法使用元表从 lua 中的基类创建实例
- java - 在继承的接口中查询方法公共抽象的验证失败
- reactjs - 反应原生 setstate 不改变状态值
- python - python应该在哪里为模块安装脚本
- java - 如何从android studio中的画廊导入图像
- ios - Mac Catalyst:iPad 应用程序中不支持多窗口的多窗口?
- swing - 使用 JAVAFX 作为外部库构建 JAVA 项目的 Runnable Jar
- generics - 如何在 Rust 中将 FnMut 与泛型参数一起使用?
- mysql - Turbofish 无法正确推断类型
- node.js - 从 NODE EXPRESS 在地图集上发布数据的问题