小编Mat*_*att的帖子

填写缺少的日期范围

我有以下示例数据框:

Date_from <- c("2013-01-01","2013-01-10","2013-01-16","2013-01-19")
Date_to <- c("2013-01-07","2013-01-12","2013-01-18","2013-01-25")
y <- data.frame(Date_from,Date_to)
y$concentration <- c("1.5","2.5","1.5","3.5")
y$Date_from <- as.Date(y$Date_from)
y$Date_to <- as.Date(y$Date_to)
y$concentration <- as.numeric(y$concentration)
Run Code Online (Sandbox Code Playgroud)

这些是特定日期范围内重金属的测量浓度.但是,由于2013-01-07至2013-01-10和2013-01-12至2013-01-16之间存在差距,因此日期范围不连续.我需要检测这些间隙,在每个间隙后插入一行并用缺少的范围填充它.结果应如下所示:

Date_from    Date_to concentration
2013-01-01 2013-01-07           1.5
2013-01-08 2013-01-09            NA
2013-01-10 2013-01-12           2.5
2013-01-13 2013-01-15            NA
2013-01-16 2013-01-18           1.5
2013-01-19 2013-01-25           3.5
Run Code Online (Sandbox Code Playgroud)

r date

4
推荐指数
1
解决办法
95
查看次数

删除 ggplot 轴中的尾随零

肯定有另一种方法可以去除 y 轴刻度标签中的尾随零,而不是用labels=c("0",...).

我在网格中绘制了许多图形,y 轴上都有尾随零,特别是零值(见图)。

在此处输入图片说明 如果我必须手动设置每个图中的所有标签,那将非常麻烦。

r ggplot2

2
推荐指数
1
解决办法
856
查看次数

如何计算R中一列中两个日期之间的天数

我有以下两个数据框:

Date <- seq(as.Date("2013/1/1"), by = "day", length.out = 17)
x <-data.frame(Date)
x$discharge <- c("1000","1100","1200","1300","1400","1200","1300","1300","1200","1100","1200","1200","1100","1400","1200","1100","1400")
x$discharge <- as.numeric(x$discharge)
Run Code Online (Sandbox Code Playgroud)

Date2 <- c("2013-01-01","2013-01-08","2013-01-12","2013-01-17")
y <- data.frame(Date2)
y$concentration <- c("1.5","2.5","1.5","3.5")
y$Date2 <- as.Date(y$Date2)
y$concentration <- as.numeric(y$concentration)
Run Code Online (Sandbox Code Playgroud)

我试图用以下代码计算从一个日期到另一个日期的天数:

y %>%
    mutate(BETWEEN0=as.numeric(difftime(Date2,lag(Date2,1))),BETWEEN=ifelse(is.na(BETWEEN0),0,BETWEEN0))%>%
    select(-BETWEEN0)
Run Code Online (Sandbox Code Playgroud)

导致:

Date2         concentration BETWEEN
1 2013-01-01           1.5       0
2 2013-01-08           2.5       7
3 2013-01-12           1.5       4
4 2013-01-17           3.5       5
Run Code Online (Sandbox Code Playgroud)

但是,我需要的是在第一个日期等旁边打印的两个日期之间计算的天数,例如

Date2         concentration BETWEEN
1 2013-01-01           1.5       7
2 2013-01-08           2.5       4
3 2013-01-12           1.5       5
4 2013-01-17           3.5       0
Run Code Online (Sandbox Code Playgroud)

这意味着从2013-01-01到2013-01-07是7天,从2013-01-08到2013-01-12是4天等.

r difftime

0
推荐指数
1
解决办法
883
查看次数

将行中的第一个值与行中的第一个值相乘

我有以下数据框:

Date <- c("04.06.2013","05.06.2013","06.06.2013","07.06.2013","08.06.2013","09.06.2013")
 discharge <- c("1000","2000","1100","3000","1700","1600")
 concentration_1 <- c("25","20","11","6.4","17","16")
 concentration_2 <- c("1.4","1.7","2.7","3.2","4","4.7")
 concentration_3 <- c("1.2","1.3","1.9","2.2","2.4","3")
 concentration_4 <- c("1","0.92","2.5","3","3.4","4.8")

y <- data.frame(Date, discharge,concentration_1,concentration_2,concentration_3,concentration_4, stringsAsFactors=FALSE)
y$Date <- as.Date(y$Date, format ="%d.%m.%Y")
y[-1] <- sapply(y[-1], as.numeric)
Run Code Online (Sandbox Code Playgroud)

在每一行中,我需要将每个浓度乘以放电.我正在研究这个apply功能,但无法弄清楚如何解决它.

r

0
推荐指数
1
解决办法
69
查看次数

标签 统计

r ×4

date ×1

difftime ×1

ggplot2 ×1