मेरे पास एक टेबल इस तरह दिखती है:

enter image description here

  v1 <- c("A","B","C")
  v2 <- c("E","G","")
  v3 <- c("B","C","D")
  df1 <- data.frame(v1,v2,v3)

और मैं इसे बदलना चाहता हूं

enter image description here

मुझे क्या करना चाहिए। यदि संभव हो तो कृपया मुझे कई तरीके दें। धन्यवाद।

-2
Stataq 3 नवम्बर 2020, 04:34

2 जवाब

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

आप डेटा को लंबे प्रारूप में प्राप्त कर सकते हैं और फिर रिक्त मानों को हटा सकते हैं।

library(dplyr)
library(tidyr)

gather(df1, variable, value) %>% filter(value != '')

#  variable value
#1       v1     A
#2       v1     B
#3       v1     C
#4       v2     E
#5       v2     G
#6       v3     B
#7       v3     C
#8       v3     D

हालांकि, gather को हटा दिया गया है और इसे pivot_longer से बदल दिया गया है।

pivot_longer(df1, cols = everything(), names_to = 'variable') %>%
    filter(value != '')

आप इसके लिए data.table का भी उपयोग कर सकते हैं:

library(data.table)
melt(setDT(df1), measure.vars = names(df1))[value != '']
1
Ronak Shah 3 नवम्बर 2020, 17:21

आप बिल्ट-इन फ़ंक्शन t() का उपयोग करके एक स्थानान्तरण कर सकते हैं

df2 <- data.frame(t(df1))
colnames(df2) <- row.names(df1)

df2
   1 2 3
v1 A B C
v2 E G  
v3 B C D
0
Andy 3 नवम्बर 2020, 04:55