首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R或Excel:确定溶解氧的日最大值,并在数据框中获取相应的时间

R或Excel:确定溶解氧的日最大值,并在数据框中获取相应的时间
EN

Stack Overflow用户
提问于 2019-08-15 05:21:44
回答 2查看 52关注 0票数 0

我尝试在R和excel上编写代码,可以获得任何形式的帮助。在excel中,我可以使用下面的代码来查找最大值并报告相邻值中的时间。

代码语言:javascript
复制
 =(INDEX($D$1:$D$97,MATCH(MAX($E$1:$E$97),$E$1:$E$97,0)))

但是,如果不手动更改每一行的公式,我就无法弄清楚如何有效地对整个数据集进行编码。

在R中,我不知道如何返回相邻的单元格值(例如,查找最大溶解氧并返回相应的时间值)。这是我在R中的东西。

代码语言:javascript
复制
library(data.table)
df<- read.csv("Book3.csv")
df
setDT(df)
n <- 97
hi <- df[datetimes, max(DO), by= (seq(nrow(df)) - 1) %/% n]

如有任何帮助,我们将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2019-08-15 06:13:02

在R中的Lauren dplyr包在这里会非常有用。你想要做的是:

代码语言:javascript
复制
library(dplyr)
df <- read.csv(filepath) %>%
filter(DO=max(.$DO) %>%
select(datetimes)

管道被称为%>%,它们基本上将一个函数的结果传递给下一个函数。.$DO告诉它使用当前数据框对象并选择DO列。然后,select语句告诉它只显示datetimes列。

票数 0
EN

Stack Overflow用户

发布于 2019-08-15 06:59:09

如果您使用的是data.table包,请利用它提供的IDateTime类和按日期设置的简单子集。惟一的诀窍是使用.SD来显示所有行。由于您没有提供数据示例,因此我将生成一个示例:

代码语言:javascript
复制
library(data.table)
set.seed(222)
datetimes <- seq(as.POSIXct("2019-01-01"), as.POSIXct("2019-01-03"), by = "3 hour")
exDT <- data.table(
  date = as.IDate(datetimes),
  time = as.ITime(datetimes),
  DO = rnorm(length(datetimes), 20, 5))

> exDT[, .SD[DO == max(DO)], by = date]
         date     time        DO
1: 2019-01-01 21:00:00 27.807025
2: 2019-01-02 06:00:00 25.262292
3: 2019-01-03 00:00:00  9.972435

另外,选中?fread可以将CSV文件作为data.table直接读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57502231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档