我有这样的 struct 数据(真实数据更复杂):

df1 <- read.table(text = "DT   odczyt.1 odczyt.2
'2023-08-14 00:00:00'   362 1.5
'2023-08-14 23:00:00'   633 4.3
'2023-08-15 05:00:00'   224 1.6
'2023-08-15 23:00:00'   445 5.6
'2023-08-16 00:00:00'   182 1.5
'2023-08-16 23:00:00'   493 4.3
'2023-08-17 05:00:00'   434 1.6
'2023-08-17 23:00:00'   485 5.6
'2023-08-18 00:00:00'   686 1.5
'2023-08-18 23:00:00'   487 6.8
'2023-08-19 00:00:00'   566 1.5
'2023-08-19 05:00:00'   278 7.9
'2023-08-19 17:00:00'   561 11.5
'2023-08-19 18:00:00'   365 8.5
'2023-08-19 22:00:00'   170 1.8
'2023-08-19 23:00:00'   456 6.6
'2023-08-20 00:00:00'   498 1.5
'2023-08-20 03:00:00'   961 1.54
'2023-08-20 05:00:00'   397 1.6
'2023-08-20 19:00:00'   532 6.6
'2023-08-20 23:00:00'   493 3.8
'2023-08-21 01:00:00'   441 9.2
'2023-08-21 07:00:00'   793 8.5
'2023-08-21 13:00:00'   395 5.5", header = TRUE) %>% 
  mutate (DT = as.POSIXct(DT))

我正在 Select 3个小时,其中"odczyt.1"具有最大值(我从最大值中排序"odczyt.1"并 Select 3个最大值).我留下这些小时发生的日期,删除其余行. 对于给定的数据,这些数据是:

2023-08-20 03:00:00(961)

2023-08-21 07:00:00(793)

2023-08-18 00:00:00(686)

因此,预期结果是:

> df1
                    DT odczyt.1 odczyt.2
1  2023-08-18 00:00:00      686     1.50
2  2023-08-18 23:00:00      487     6.80
3  2023-08-20 00:00:00      498     1.50
4  2023-08-20 03:00:00      961     1.54
5  2023-08-20 05:00:00      397     1.60
6  2023-08-20 19:00:00      532     6.60
7  2023-08-20 23:00:00      493     3.80
8  2023-08-21 01:00:00      441     9.20
9  2023-08-21 07:00:00      793     8.50
10 2023-08-21 13:00:00      395     5.50

推荐答案

我有个 idea

df1 |>
  mutate(
    day = as.Date(trunc(DT)),
    rnk = rank(-odczyt.1, ties="first")
  ) |>
  filter(.by = day, any(rnk <= 3))
#                     DT odczyt.1 odczyt.2        day rnk
# 1  2023-08-18 00:00:00      686     1.50 2023-08-18   3
# 2  2023-08-18 23:00:00      487     6.80 2023-08-18  11
# 3  2023-08-20 00:00:00      498     1.50 2023-08-20   8
# 4  2023-08-20 03:00:00      961     1.54 2023-08-20   1
# 5  2023-08-20 05:00:00      397     1.60 2023-08-20  17
# 6  2023-08-20 19:00:00      532     6.60 2023-08-20   7
# 7  2023-08-20 23:00:00      493     3.80 2023-08-20  10
# 8  2023-08-21 01:00:00      441     9.20 2023-08-21  15
# 9  2023-08-21 07:00:00      793     8.50 2023-08-21   2
# 10 2023-08-21 13:00:00      395     5.50 2023-08-21  18

R相关问答推荐

提取R中值和列名的所有可能组合

使用R中的Shapetime裁剪格栅文件

如何计算R数据集中每个女性的子元素数量?

删除列表中存储的数据帧内和数据帧之间的重复行

Rplotly中的Sankey Diagram:意外连接&

使用sf或terra的LINESTRAING的累积长度

迭代到DataFrame列并获得成对的值列表(col1->;col2、col2->;col3、col3->;col4等)的正确方法.

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

Geom_arcbar()中出错:找不到函数";geom_arcbar";

使用shiny 中的所选要素行下拉菜单

计算使一组输入值最小化的a、b和c的值

是否有可能从边界中找到一个点值?

快速合并R内的值

如何将EC50值绘制在R中的剂量-react 曲线上?

如何在R中创建这些列?

如何修复geom_rect中的层错误?

R中的交叉表

向数据添加标签

残差与拟合图上标记点的故障排除

如何在用`{{ }}`创建的变量上使用整洁 Select ?