मेरे पास data1
नाम का एक डेटासेट है जिसमें हेडर year
और count
हैं।
मेरा नमूना डेटा इस तरह दिखता है:
Year Count
1 2005 3000
2 2006 4000
3 2007 5000
4 2008 6000
मैं डेटा में एक और कॉलम जोड़ता हूं जो वार्षिक वृद्धि का काम करता है। यह मेरा कोड है:
data1growth <- data1 %>%
mutate(Growth = Count - lag(Count))
मैं अवधि नामक एक और कॉलम जोड़ने में सक्षम होना चाहता हूं ताकि मुझे निम्न आउटपुट मिल सके:
Year Count Growth Period
1 2005 3000 NA NA
2 2006 4000 1000 2005-2006
3 2007 5000 1000 2006-2007
4 2008 6000 1000 2007-2008
वांछित आउटपुट प्राप्त करने के लिए मुझे म्यूटेट फ़ंक्शन में कौन सा कोड जोड़ना चाहिए, या क्या मैं पूरी तरह से निशान से बाहर हूं? किसी भी मदद की सराहना की जाती है।
सबको धन्यवाद।
0
Big Rick
2 सितंबर 2020, 14:15
3 जवाब
सबसे बढ़िया उत्तर
library(dplyr)
data1 %>%
mutate(
Growth = Count - lag(Count),
period = if_else(
row_number() > 1,
paste0(lag(Year), "-", Year),
NA_character_
)
)
# Year Count Growth period
# 1 2005 3000 NA <NA>
# 2 2006 4000 1000 2005-2006
# 3 2007 5000 1000 2006-2007
# 4 2008 6000 1000 2007-2008
प्रतिलिपि प्रस्तुत करने योग्य डेटा
data1 <- data.frame(
Year = seq(2005L, 2008L, 1L),
Count = seq(3000L, 6000L, 1000L)
)
1
sindri_baldur
2 सितंबर 2020, 16:01
यहाँ एक आधार R विकल्प है
transform(df1,
Grouth = c(NA, diff(Count)),
Period = c(NA, paste0(Year[-nrow(df1)], "-", Year[-1]))
)
जो देता है
Year Count Grouth Period
1 2005 3000 NA <NA>
2 2006 4000 1000 2005-2006
3 2007 5000 1000 2006-2007
4 2008 6000 1000 2007-2008
0
ThomasIsCoding
2 सितंबर 2020, 16:41
यदि आप चाहते हैं कि 'अवधि' केवल एक स्ट्रिंग हो, तो आप बस एक और उत्परिवर्तित का उपयोग कर सकते हैं:
library(tidyverse)
data1 <- tibble(Year = 2005:2008, Count = c(3000, 4000, 5000, 6000))
data1growth <- data1 %>%
mutate(Growth = Count - lag(Count))
# Period as string
data1growth %>%
mutate(Period = paste0(Year, "-", Year-1))
#> # A tibble: 4 x 4
#> Year Count Growth Period
#> <int> <dbl> <dbl> <chr>
#> 1 2005 3000 NA 2005-2004
#> 2 2006 4000 1000 2006-2005
#> 3 2007 5000 1000 2007-2006
#> 4 2008 6000 1000 2008-2007
# Period as string (don't include NA Growth)
data1growth %>%
mutate(Period = ifelse(is.na(Growth), NA, paste0(Year, "-", Year-1)))
#> # A tibble: 4 x 4
#> Year Count Growth Period
#> <int> <dbl> <dbl> <chr>
#> 1 2005 3000 NA <NA>
#> 2 2006 4000 1000 2006-2005
#> 3 2007 5000 1000 2007-2006
#> 4 2008 6000 1000 2008-2007
0
csgroen
2 सितंबर 2020, 14:32