r - R:如何简单地计算最后一个 NA
问题描述
我想知道一种简单的方法,使用 dplyr 来计算每个 Id 的最后一个 NA 值的数量(仅当最后一个值为 NA 时)
my_data <- tibble(Id =c(1,1,1,2,2,2),date = rep(seq.Date(ymd(20210101),ymd(20210103),by =1 ),2), value = c(5, NA, 4, 4, NA, NA))
预期结果:
result <- tibble(Id = c(1,2), Result = c(0, 2))
我试过了
my_data %>%
group_by(Id) %>%
mutate(test= ifelse(is.na(value), 1, 0)) %>%
filter(rle(test)$values[length(rle(test)$lengths)]!=0 ) %>%
summarise(result = rle(test)$lengths[length(rle(test)$lengths)])
解决方案
更新: 非常感谢帮助我理解问题的@tmfmnk,也非常感谢再次帮助我解决任务的@akrun!使用 dplyr 仅计算序列第一次出现的次数
library(dplyr)
my_data %>%
group_by(Id) %>%
mutate(value = rev(value)) %>%
mutate(first_sequence_A = with(rle(is.na(value)), lengths[values][1])) %>%
summarise(lastNAcount = ifelse(is.na(first(value)), first_sequence_A[1],0))
输出:
Id lastNAcount
<dbl> <dbl>
1 1 0
2 2 2
第一个答案: 试试这个:
library(dplyr)
my_data %>%
group_by(Id) %>%
summarise(lastNAcount = sum(is.na(last(value))))
Id lastNAcount
* <dbl> <int>
1 1 0
2 2 1
推荐阅读
- haskell - 如何使一个参数成为另一个参数类型的函数?
- python - 流式解压缩存档
- arrays - ACF 和 Dokan 用户字段值相同
- java - Java 方法操作两个对象的属性值返回错误。银行转账程序
- javascript - 在另一个选项卡而不是控制台中显示 pyodide.runPython() 的结果
- html - 为什么我的 CSS 代码中的颜色和背景颜色标签不起作用?
- time - 为什么hexo生成的文件日期是1970
- node.js - 从 Cloud Functions for Firebase 获取当前用户 ID(PubSub 触发器)
- pytorch - 填充后如何生成注意蒙版?
- terraform - 根据变量值选择一个 terraform 模块