小编get*_*ere的帖子

用于计算比较连续时间段的值的函数

我一直无法在Stack Overflow上找到我的查询解决方案.这篇文章是相似的,但我的数据集略有 - 而且重要的是 - 不同(因为我在我的分组变量中有多个'时间'度量).

随着时间的推移,我对不同地点的生物进行了观察.这些网站进一步聚合到更大的区域,所以我想最终有一个我可以在ddply中调用的函数来汇总地理区域内每个时间段的数据集.但是,我无法获得我需要的功能.

如何循环显示时间段并与之前的时间段进行比较,计算交叉点(即两个时间段内发生的"站点"数量)和每个时段中出现的数量之和?

玩具数据集:

time = c(1,1,1,1,2,2,2,3,3,3,3,3)
site = c("A","B","C","D","A","B","C","A","B","C","D","E")
df <- as.data.frame(cbind(time,site))
df$time = as.numeric(df$time) 
Run Code Online (Sandbox Code Playgroud)

我的功能

dist2 <- function(df){
  for(i in unique(df$time))
  {
    intersection <- length(which(df[df$time==i,"site"] %in% df[df$time==i-   1,"site"]))
    both <- length(unique(df[df$time==i,"site"])) + length(unique(df[df$time==i-1,"site"]))
  }
  return(as.data.frame(cbind(time,intersection,both)))
  }

dist2(df)
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

dist2(df)
   time intersection both
1     1            3    8
2     1            3    8
3     1            3    8
4     1            3    8
5     2            3    8
6     2            3    8
7     2            3    8 …
Run Code Online (Sandbox Code Playgroud)

time r function plyr

7
推荐指数
1
解决办法
256
查看次数

标签 统计

function ×1

plyr ×1

r ×1

time ×1