计算r中大数据中发生的事件数

时间:2016-02-17 08:58:45

标签: r

您好我有一个大型数据集,其中一部分可能看起来像这样。

Seconds <- c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24)
B<- c(1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1)
C<-c(50, 60, 62, 65, 80, 60, 68, 66, 60, 69, 70, 89)
mydata<- data.frame(Seconds, B, C)

我陷入了对这类数据的分析中。我需要直接解决问题 连续超过6秒和10秒的次数C <80。

在这种情况下

N6(C <80超过6秒)= 4

N10(C <80超过10秒)= 1

我希望这是有道理的!任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分:2)

我们可以做到

 with(mydata, sum(C<80 & Seconds>=6 & B!=0))
 #[1] 4

也可能

 library(data.table)
 setDT(mydata)[Seconds>=6 & B!=0, sum(C<80), rleid(B)]

答案 1 :(得分:2)

我想建议这种适度的基于dplyr的解决方案

function Char_Counts(str){
  return str.replace(/\s/g, "").split("").reduce(function(prev, current){
    if(!(current in prev)){ prev[current] = 1} else { prev[current]++}
    return prev;
  }, {})
}

预览

# Libs
Vectorize(require)(package = c("dplyr", "magrittr"),
                   char = TRUE)
# Summary
mydata %<>%
  mutate(criteria = ifelse(Seconds >= 6 & C < 80, TRUE, FALSE)) %>% 
  group_by(criteria) %>% 
  tally()