Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算R中多个站点的最大NA数据差距?_R_For Loop - Fatal编程技术网

如何计算R中多个站点的最大NA数据差距?

如何计算R中多个站点的最大NA数据差距?,r,for-loop,R,For Loop,我有一个数据框(df1),我想知道每个唯一的siteID在Temp.列中的最大NA间隙。我已经尝试使用for循环来回答这个问题,但无法使其工作,请参见下面的内容 df1 <- data.frame(matrix(ncol = 3, nrow = 9)) x <- c("siteID", "Date", "Temp.") colnames(df1) <- x df1$siteID <- c("a"

我有一个数据框(
df1
),我想知道每个唯一的
siteID
Temp.
列中的最大
NA
间隙。我已经尝试使用for循环来回答这个问题,但无法使其工作,请参见下面的内容

df1 <- data.frame(matrix(ncol = 3, nrow = 9))
x <- c("siteID", "Date", "Temp.")
colnames(df1) <- x
df1$siteID <- c("a","a","a",
                   "b","b","b",
                   "c","c","c")
df1$Date <- rep(seq(from = as.Date("2020-01-01"), to = as.Date("2020-01-03"), by = 1),3)  
df1$Temp. <- c("10",NA,NA,
               "20",NA,"10",
               "2","4","6")
输出应该如下所示

saveDat

  siteID MaxGap
1      a      2
2      b      1
3      c      0

这里有一个选项,我们根据'Temp'的NA元素的'siteID'和运行长度id进行分组,然后创建一个计数列(
n()
),
summary
返回'MaxGap'的
第一个
如果
在'Temp'中有
任何
,或者
其他
0,
slice
按“siteID”分组的“MaxGap”的最大行

library(dplyr)
library(data.table)
df1 %>%
   group_by(siteID, grp = rleid(is.na(Temp.))) %>%
   mutate(MaxGap = n()) %>%  
   summarise(MaxGap = if(any(is.na(Temp.))) first(MaxGap)
         else 0, .groups = 'drop') %>%
   group_by(siteID) %>% 
   slice_max(n = 1, MaxGap) %>%
   select(-grp)
-输出

# A tibble: 3 x 2
# Groups:   siteID [3]
#  siteID MaxGap
#  <chr>   <dbl>
#1 a           2
#2 b           1
#3 c           0
# A tibble: 3 x 2
#  siteID MaxGap
#  <chr>   <dbl>
#1 a           2
#2 b           1
#3 c           0
-输出

# A tibble: 3 x 2
# Groups:   siteID [3]
#  siteID MaxGap
#  <chr>   <dbl>
#1 a           2
#2 b           1
#3 c           0
# A tibble: 3 x 2
#  siteID MaxGap
#  <chr>   <dbl>
#1 a           2
#2 b           1
#3 c           0
#一个tible:3 x 2
#站点ID MaxGap
#     
#1 a 2
#2 b 1
#3C0
相关: