【发布时间】:2020-11-23 16:28:44
【问题描述】:
我想使用dplyr 中的filter() 函数保留第一个观察结果。我的意思是,我会从过滤中获得许多满足相同标准的行,但我只想保留第一个,而不会进一步重复到group() 和distinct()。有可能吗?
我需要从数据框中提取第一个日期戳和第一个显示为“坏”的日期戳。
problem = data.frame(
Status = c("Good", "Good", "Bad", "Bad", "Bad"),
Date_entry = c(as.Date("2000-01-01"), as.Date("2000-01-02"), as.Date("2000-01-03"), as.Date("2000-01-04"),as.Date("2000-01-05")),
Date_status = c(as.Date("1999-01-01"), as.Date("1999-01-01"), as.Date("1999-01-02"), as.Date("1999-01-02"), as.Date("1999-01-02")),
Value = c(150,20,14,96,04))
我可以filter(Date == min(Date)) 但我不知道如何准确过滤掉第一个“坏”结果。
我试过filter(Date_entry== min(Date_entry) | (Date_status - Date_entry) == min(Date_status - Date_entry)) 但还是不行
solution =
data.frame(Status = c("Good", "Bad"),
Date_entry = c(as.Date("2000-01-01"), as.Date("2000-01-02")),
Date_status = c(as.Date("1999-01-01"), as.Date("1999-01-02")),
Value = c(150,20))
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。也许你只需要
slice(1)? -
可以在filter()里面使用吗?
-
在
filter()之后使用。但是从你的描述中你的意思有点不清楚。同样,一个可重现的例子会让事情变得更加清晰。 -
您可以使用
filter(row_number() == 1),但如果您可以放宽“使用filter函数”的要求,这就是slice的用途。或者head(1)也可以。 -
哦,我明白了 - 再次阅读您的问题,您似乎有某些条件,而您只想要满足那个条件的第一行。一个可重现的例子会让这更清楚......