r - 子集分组数据
问题描述
我正在尝试对分组数据集进行子集化。尽管关于这个主题有很多问题(例如Select the first and last row by group in a data frame),但没有一个适合我这里描述的案例。一个示例数据是
df<-data.frame("id"=c(1,1,1,2,2,2,3,3,3),
"x1"=c(NA,1,1,1,1,1,0,0,1),
"x2"=c(10,8,13,4,7,6,9,10,6))
我想为每个 id 第一次看到“x1”等于 1 的情况保留数据。我希望有
df<-data.frame("id"=c(1,2,3),
"x1"=c(1,1,1),
"x2"=c(8,4,6))
我试过了
df<-df %>%
group_by(id) %>%
filter(first(x1)==1)
但它提供了不需要的输出。非常感谢您对此的任何帮助。
解决方案
您可以先根据您的条件过滤数据框,然后使用该slice
函数为每个组选择第一行。
df %>%
group_by(id) %>%
filter(x1 == 1) %>%
slice(1)
# A tibble: 3 x 3
# Groups: id [3]
# id x1 x2
# <dbl> <dbl> <dbl>
# 1 1 1 8
# 2 2 1 4
# 3 3 1 6
推荐阅读
- google-tasks - Google 任务 API 补丁覆盖了时间部分
- javascript - 无法摆脱 javascript 递归
- c# - 切换到特定 iframe 时超时
- macos - Xcode 12 折叠所有构建目标
- laravel - 我想使用 laravel 获取权限 ID
- python - 从Python中的另一个文件导入变量时的无限循环
- usb - 如何发送超过 64 字节的 HID 数据包?
- apache-kafka - Kafka log.segment.bytes vs log.retention.hours
- reactjs - 迁移到 React 查询 3
- android - 当应用程序在后台时,如何将多个传感器值传递给android中的通知栏