您好我有一个大型数据集,其中一部分可能看起来像这样。
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
我希望这是有道理的!任何帮助表示赞赏:)
答案 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()