डेटा

str(DT)
Classes ‘data.table’ and 'data.frame':  6 obs. of  3b variables:
 $ A  : Factor w/ 6 levels "0","1","2","3",..: 1 2 3 4 5 6
 $ N  : num  13 11 10 5 1 1
 $ ID : Factor w/ 1 level "1": 1 1 1 1 1 1

मैं इस डीटी को नीचे डीटी में दोबारा बदलना चाहता हूं। अगर मैं डीटी को melt.data.table(DT, id.vars = "ID", measure.vars = 1:2) से पिघलाता हूं तो मुझे निम्नलिखित निराला पिघला हुआ डीटी मिलता है।

   ID  N     variable value
 1: 1 13         A     0
 2: 1 11         A     1
 3: 1 10         A     2
 4: 1  5         A     3
 5: 1  1         A     4
 6: 1  1         A     5
 7: 1 13         N    13
 8: 1 11         N    11
 9: 1 10         N    10
10: 1  5         N     5
11: 1  1         N     1
12: 1  1         N     1

मेरा वांछित आउटपुट इस प्रकार है। मूल रूप से, पिघला हुआ डीटी में एक पूर्व-पिघला हुआ डीटी से स्टैक्ड वैरिएबल कॉलम के बिना एक चर (या नया) कॉलम होना चाहिए

वांछित आउटपुट

     ID   variable  value    N 
 1:   1     A        0      13
 2:   1     A        1      11
 3:   1     A        2      10
 4:   1     A        3       5  
 5:   1     A        4       1
 6:   1     A        5       1

मैं किसी भी संकेत की सराहना करता हूं

थोड़ी देर से लेकिन यहाँ एक मूल डेटा तालिका है:

   A  N  ID
1:   0 13   1
2:   1 11   1
3:   2 10   1
4:   3  5   1
5:   4  1   1
6:   5  1   1
1
akh22 31 जिंदा 2020, 23:20
1
क्या आप अपना iinput डेटासेट दिखा सकते हैं
 – 
akrun
31 जिंदा 2020, 23:24
निराला से आपका वास्तव में क्या मतलब है?
 – 
camille
1 फरवरी 2020, 02:00

3 जवाब

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

हम tidyr से pivot_longer का उपयोग कर सकते हैं। @Rui Barradas के डेटा का उपयोग करना।

tidyr::pivot_longer(dt1, cols = A, names_to = 'variable') %>%
   dplyr::select(ID,variable, value ,N)

# A tibble: 6 x 4
#  ID    variable value     N
#  <fct> <chr>    <fct> <dbl>
#1 1     A        0        13
#2 1     A        1        11
#3 1     A        2        10
#4 1     A        3         5
#5 1     A        4         1
#6 1     A        5         1
3
Ronak Shah 1 फरवरी 2020, 06:20

यह समाधान प्रश्न की तरह data.table::melt का उपयोग करता है। लेकिन प्रश्न के विपरीत, सभी वेरिएबल्स जिन्हें स्टैक नहीं किया जाना है, तर्क id.vars में हैं।

library(data.table)

melt(dt1, id.vars = c("ID", "N"))
#   ID  N variable value
#1:  1 13        A     0
#2:  1 11        A     1
#3:  1 10        A     2
#4:  1  5        A     3
#5:  1  1        A     4
#6:  1  1        A     5

डेटा

dt1 <- data.table(A = factor(0:5),
                  N = c(13, 11, 10, 5, 1, 1),
                  ID = factor(1))
4
Rui Barradas 1 फरवरी 2020, 00:59

यदि इनपुट डेटासेट 6 पंक्ति डेटासेट है, तो हम उन कॉलम को बना सकते हैं:

library(data.table)
DT[, c('variable', 'value') := .('A', as.numeric(as.character(A)) -1)][, A := NULL][]
#     N ID variable value
#1: 13  1        A     0
#2: 11  1        A     1
#3: 10  1        A     2
#4:  5  1        A     3
#5:  1  1        A     4
#6:  1  1        A     5

आंकड़े

DT <- data.table(A = factor(1:6), N = c(13, 11, 10, 5, 1, 1), ID = 1)
2
akrun 1 फरवरी 2020, 00:26