查找日期范围内的NA值

卢西亚诺

我有这些日期:

library(lubridate)
set.seed(50)
myDates <- ymd("2013-07-12") + days(sample(1:100, 20))
df <- data.frame(date=as.Date(myDates), value=sample(1:100, 20))
df[sample(1:20, 5, replace=F), "value"] <- NA

         date value
1  2013-09-21    NA
2  2013-08-25    11
3  2013-08-01    NA
4  2013-09-25    96
5  2013-08-31    55
6  2013-07-17    27
7  2013-09-16    99
8  2013-09-11    66
9  2013-07-16    89
10 2013-07-22    37
11 2013-08-17    NA
12 2013-08-06    56
13 2013-09-07    NA
14 2013-07-19    39
15 2013-08-05    NA
16 2013-09-08    17
17 2013-10-20    54
18 2013-08-12    23
19 2013-10-07    71
20 2013-07-26    98

我想创建一个将上述日期范围和任何其他日期范围分成4部分的函数。这4个部分应分别为日期范围的第一,第二,第三和第四四分位数。因此,该函数需要找到最早的日期和最晚的日期,然后将的每个元素分配给value四分位数。上面的代码中的日期范围是这样的:

range(df$date[!is.na(df$date)])
[1] "2013-07-16" "2013-10-20"

然后,我需要该函数来查找每个四分位数中的NA值数量。能做到吗?

QuantIbex

这是一个建议:

# Create data
library(lubridate)
set.seed(50)
myDates <- ymd("2013-07-12") + days(sample(1:100, 20))
df <- data.frame(date=as.Date(myDates), value=sample(1:100, 20))
df[sample(1:20, 5, replace=F), "value"] <- NA

#          date value
# 1  2013-09-21    NA
# 2  2013-08-25    NA
# 3  2013-08-01    70
# 4  2013-09-25    82
# 5  2013-08-31    30
# 6  2013-07-17    NA
# 7  2013-09-16    55
# 8  2013-09-11    NA
# 9  2013-07-16    96
# 10 2013-07-22    34
# 11 2013-08-17    33
# 12 2013-08-06    37
# 13 2013-09-07    39
# 14 2013-07-19    54
# 15 2013-08-05    99
# 16 2013-09-08    NA
# 17 2013-10-20    11
# 18 2013-08-12    59
# 19 2013-10-07    31
# 20 2013-07-26    38

# Proposed solution
myQtle   <- quantile(as.POSIXlt(df$date), probs = 0.25 * 1:4)
myCumVal <- sapply(myQtle,
                   function(qtle, theDates, theValues){
                       sum(is.na(theValues[theDates <= qtle]))},
                   theDates  = as.POSIXlt(df$date),
                   theValues = df$value)

data.frame(qtle  = as.Date(myQtle),
           nb.na = c(myCumVal[1], diff(myCumVal)))

#            qtle nb.na
# 25%  2013-07-30     1
# 50%  2013-08-21     0
# 75%  2013-09-12     3
# 100% 2013-10-20     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找日期在范围内

来自分类Dev

查找范围内的值

来自分类Dev

查找日期范围内的可用日期

来自分类Dev

查找日期范围内的可用日期

来自分类Dev

查找日期范围内的行数-MySQL

来自分类Dev

Scala查找范围内的缺失值

来自分类Dev

查找值是否在范围内

来自分类Dev

查找给定范围内的缺失值

来自分类Dev

查找并选择范围内的值

来自分类Dev

在指定的日期范围内如何查找给定的日期

来自分类Dev

PHP:查找预订日期是否在指定的日期范围内

来自分类Dev

使用 XSLT 查找日期是否在日期范围内

来自分类Dev

SUMIF 或 INDEX - 查找满足日期范围内日期的总和

来自分类Dev

Excel-在= <0的范围内查找第一个值并返回日期

来自分类Dev

mongodb查找日期范围内但一天中特定时间的值

来自分类Dev

用R中的dplyr查找日期范围内的最大值

来自分类Dev

在后缀日期范围内查找文件

来自分类Dev

Excel公式查找给定范围内的日期(整列)

来自分类Dev

SQL 查找日期是否在一个范围内

来自分类Dev

SQL 在 31 天的时间范围内查找日期

来自分类Dev

查找日期范围内的工作日

来自分类Dev

查找2个值范围内的值

来自分类Dev

Excel 按值计算日期范围内的不同值

来自分类Dev

按汇总分组以查找范围内的缺失值

来自分类Dev

R +查找算法以匹配相同元素范围内的值

来自分类Dev

查找值并在多个后续范围内填充.filldown?

来自分类Dev

范围内的数据帧查找值,并返回不同的列

来自分类Dev

Excel:查找范围内的特定(文本)值

来自分类Dev

查找范围内最高的12个连续值