मेरे पास अपूर्ण समय श्रृंखला डेटाफ़्रेम है और मुझे लापता समय टिकटों के लिए NA की पंक्तियाँ सम्मिलित करने की आवश्यकता है। प्रति दिन हमेशा 6 टाइम स्टैम्प होने चाहिए, जो डेटाफ़्रेम में वेरिएबल "सिग्नल" (1-6) द्वारा इंगित किया गया है। मैं अपूर्ण डेटाफ्रेम A को एक वेक्टर B के साथ मर्ज करने का प्रयास कर रहा हूं जिसमें सभी सिग्नल हैं। नीचे सरलीकृत उदाहरण डेटा:

B <- rep(1:6,2) 
A <- data.frame(Signal = c(1,2,3,5,1,2,4,5,6), var1 = c(1,1,1,1,1,1,1,1,1))
Expected <- data.frame(Signal = c(1,2,3,NA, 5, NA, 1,2,NA,4,5,6), var1 = c(1,1,1,NA,1,NA,1,1,NA,1,1,1)

ध्यान दें कि Bकई चर वाले डेटाफ़्रेम का प्रतिनिधित्व करता है और Expected में NA डेटाफ़्रेम में NA की पंक्तियाँ हैं। साथ ही वास्तविक डेटाफ्रेम में अधिक अवलोकन (कुल 84) हैं।

बहुत अच्छा होगा अगर आप लोग मेरी मदद कर सकें!

0
Björn Butter 20 पद 2019, 04:25

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप पहले से ही जानते हैं कि एक दिन में 6 टाइमस्टैम्प हैं तो आप बिना B के ऐसा कर सकते हैं। हम प्रत्येक दिन के लिए समूह बना सकते हैं और NA के साथ लापता टिप्पणियों को जोड़ने के लिए complete का उपयोग कर सकते हैं।

library(dplyr)
library(tidyr)

A %>%
  group_by(gr = cumsum(c(TRUE, diff(Signal) < 0))) %>%
  complete(Signal = 1:6) %>%
  ungroup() %>%
  select(-gr)

#   Signal  var1
#    <dbl> <dbl>
# 1      1     1
# 2      2     1
# 3      3     1
# 4      4    NA
# 5      5     1
# 6      6    NA
# 7      1     1
# 8      2     1
# 9      3    NA
#10      4     1
#11      5     1
#12      6     1

यदि आउटपुट में आपको लापता संयोजन के लिए Signal के रूप में NA की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं

A %>%
  group_by(gr = cumsum(c(TRUE, diff(Signal) < 0))) %>%
  complete(Signal = 1:6) %>%
  mutate(Signal = replace(Signal, is.na(var1), NA)) %>%
  ungroup %>%
  select(-gr)

#   Signal  var1
#    <dbl> <dbl>
# 1      1     1
# 2      2     1
# 3      3     1
# 4     NA    NA
# 5      5     1
# 6     NA    NA
# 7      1     1
# 8      2     1
# 9     NA    NA
#10      4     1
#11      5     1
#12      6     1
2
Ronak Shah 20 पद 2019, 01:35