r - सदिश में लगातार जोड़े की संख्या की गणना करें




split count (3)

बेस आर में, जोड़ बनाने के लिए जोड़ी के दाहिने आधे हिस्से को जोड़ दें:

V<-c(-1,-1,-1,-1,-1,-1,-1,-1,1,1)
table(diff(V) + V[-1])    
#-1  1  3 
# 7  1  1 

प्रत्येक जोड़ी को कैसे बना दिया जाता है:

(-1,-1) => (-1) - (-1) + (-1) = -1
(-1, 1) => ( 1) - (-1) +  (1) =  3
( 1,-1) => (-1) -  (1) + (-1) = -3
( 1, 1) => ( 1) -  (1) +  (1) =  1

मान लीजिए कि मेरे पास निम्न वेक्टर है:

    V<-c(-1,-1,-1,-1,-1,-1,-1,-1,1,1) 

और मैं निम्नलिखित श्रेणियों में संसाधित जोड़े की संख्या की गणना करना चाहता हूं:

    (1,1), (-1,1), (1,-1), and (-1,-1).

मेरे उदाहरण में, लगातार सात जोड़े (-1,-1) , एक जोड़ी (-1,1) , और 1 जोड़ी (1,1)

मैं विभाजित समारोह का उपयोग करके इस समस्या को हल करने की कोशिश कर रहा हूं, लेकिन मैं सही कारकों का पता लगाने में सक्षम नहीं हूं।

विचार द्वितीय के साथ पहला अवलोकन जोड़ना है तीसरे और इतने पर 2 के साथ। अंतिम जोड़ी (एन -1) वें अवलोकन के साथ nth अवलोकन के साथ होना चाहिए।


शायद ऐसा कुछ

library(zoo)
table(rollapply(V, 2, toString))
# -1, -1  -1, 1   1, 1 
#      7      1      1 

या आधार आर के साथ

table(paste(head(V, -1), tail(V, -1)))
# -1 -1  -1 1   1 1 
#     7     1     1 

या @र्क्रंस टिप्पणी के अनुसार, paste बिना

table(head(V, -1), tail(V, -1))
#    -1 1
# -1  7 1
#  1  0 1

या

as.data.frame(table(head(V, -1), tail(V, -1)))
#   Var1 Var2 Freq
# 1   -1   -1    7
# 2    1   -1    0
# 3   -1    1    1
# 4    1    1    1

डेटा के साथ योग्य :

library(data.table)
dt <- rev(data.table(embed(V,2)))
dt[,.N, by=names(dt)]
#    V2 V1 N
# 1: -1 -1 7
# 2: -1  1 1
# 3:  1  1 1




categories