r - 在数据帧间隔内查找最大值

标签 r dataframe max

我有一个数据框,每 5 秒有一个 x/y 值,每秒有一个深度值(时间列)。有 x/y 值的地方没有深度。

x <- c("1430934", NA, NA, NA, NA, "1430939")
y <- c("4943206", NA, NA, NA, NA, "4943210")
time <- c(1:6)
depth <- c(NA, 10, 19, 84, 65, NA)
data <- data.frame(x, y, time, depth)
data 
     x       y      time depth
1 1430934 4943206    1    NA     
2    NA    NA        2    10     
3    NA    NA        3    19     
4    NA    NA        4    84     
5    NA    NA        5    65   
6 1430939 4943210    6    NA    

我想计算非 NA 的 x/y 值之间的最大深度,并将其添加到起始 x/y 值行中的新列中。所以第 2-5 行的最大深度。所需输出的示例。

    x       y       time depth newvar
1 1430934 4943206    1    NA     84
2    NA    NA        2    10     NA
3    NA    NA        3    19     NA
4    NA    NA        4    84     NA
5    NA    NA        5    65     NA
6 1430939 4943210    6    NA     NA

只要出现新的 x/y 值,就会重复此操作。

最佳答案

您可以将 avecumsum!is.na 一起使用来获取 ave 的组,例如:

data$newvar <- ave(data$depth, cumsum(!is.na(data$x)), FUN=
 function(x) if(all(is.na(x))) NA else {
  c(max(x, na.rm=TRUE), rep(NA, length(x)-1))})
data
#        x       y time depth newvar
#1 1430934 4943206    1    NA     84
#2    <NA>    <NA>    2    10     NA
#3    <NA>    <NA>    3    19     NA
#4    <NA>    <NA>    4    84     NA
#5    <NA>    <NA>    5    65     NA
#6 1430939 4943210    6    NA     NA

关于r - 在数据帧间隔内查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61338917/

相关文章:

CSS Div 拉伸(stretch) 100% 页面高度

r - 从 data.table 中选择具有最小值的行

r - 使用 R 访问 ACM 数字图书馆 - 没有 API 那么怎么可能?

r - 将列名传递给R tidyr传播

r - 如何删除数据框中的 "Not Available"

pandas - 根据数据帧中数字的连续出现计算条件概率

php sql查询更改url,但不更改数据

python - 将多个值添加到列中 - Pandas

python - 如何通过标记现有数据帧的内容来创建新数据帧?

Postgresql 获取具有另一个最大值的不同值