r - 过滤R中的第一行
问题描述
我想filter()
使用dplyr
. 我的意思是,我会从过滤中获得许多满足相同标准的行,但我只想保留第一个,而不进一步重复group()
and 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))
解决方案
我认为你所要求的可以解决
problem %>%
filter(Date_entry==min(Date_entry) | cumsum(Status=="Bad")==1)
这里我们选择最小日期,或者我们使用cumsum
(累积和)技巧选择 Bad 的第一个值。每次观察到“Bad”时,此数字都会增加 1,因此我们只需选择等于 1 的行(如果存在)。
推荐阅读
- css - 开发人员有没有办法以与默认颜色不同的颜色突出显示网站上的浏览器 (f3) 搜索结果?
- python - 如何在 PyCharm 中运行时打开调试
- c# - File.Delete 上的 System.IO.DirectoryNotFoundException 获取有效路径
- javascript - Django 中的 Vue.js 初始化
- r - 如何使用 Rscript 和 readr 从 aws s3 获取数据
- c# - 如何“释放”实现 IDispose 的成员变量?
- react-native - 如何在 REACT NATIVE 中打开第二个抽屉
- javascript - 如何检查数组中的属性
- html - 如何在表格中添加垂直标题
- c# - Perlin 噪声和负坐标