首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按包含相等的条件过滤行,并使用R获得最大值

按包含相等的条件过滤行,并使用R获得最大值
EN

Stack Overflow用户
提问于 2021-12-14 08:40:06
回答 1查看 31关注 0票数 2

假设我有一个数据df,如下所示:

代码语言:javascript
复制
df <- structure(list(date = c("2021-10-1", "2021-10-2", "2021-10-3", 
"2021-10-4", "2021-10-5", "2021-10-6", "2021-10-7", "2021-10-8", 
"2021-10-9"), value = c(190.3, 174.9, 163.2, 168.4, 168.6, 168.2, 
163.5, 161.6, 172.9), type = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L)), class = "data.frame", row.names = c(NA, -9L))

我试图筛选满足两个条件的行( condtions,而不是):

  1. type==2
  2. type==1max(date).

我的试用码:

代码语言:javascript
复制
df$date <- as.Date(df$date)

方法1:

代码语言:javascript
复制
df[type==2 | date==max(df[type==1]$date)]

退出:

代码语言:javascript
复制
Error in `[.data.frame`(df, type == 2 | date == max(df[type == 1]$date)) : 
object 'type' not found

方法2:

代码语言:javascript
复制
df %>%
  filter(type==2|date==max(df[type==1]$date))

退出:

代码语言:javascript
复制
Error: Problem with `filter()` input `..1`.
i Input `..1` is `type == 3 | date == max(df[type == 2]$date)`.
x undefined columns selected

但是,当我在来自this link的代码this link中使用它时,它就会产生效果。

预期结果:

我想知道如何使用上述两种方法正确地进行过滤?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-14 08:46:27

请查看这是否生成预期的输出。

代码语言:javascript
复制
library(dplyr)

df2 <- df %>%
  mutate(date = as.Date(date)) %>%
  filter(type == 2 | (type == 1 & date == max(date[type == 1])))
df2
#         date value type
# 1 2021-10-05 168.6    1
# 2 2021-10-06 168.2    2
# 3 2021-10-07 163.5    2
# 4 2021-10-08 161.6    2
# 5 2021-10-09 172.9    2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70345961

复制
相关文章

相似问题

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