मेरे पास एक बड़ी डेटा सीएसवी फ़ाइल है। मैं उन्हें एक CSV फ़ाइल में मर्ज करने में कामयाब रहा। अब जब मैं फ़ाइल पढ़ता हूं तो यह लगातार प्रवाह नहीं होता है। उदाहरण के लिए :

file1 CSV: id date 
           21 2001
           21 2002
           21 2003
           22 2001
           22 2001
           22 2002
file2 CSV: 21 2006
           21 2005
           21 2007
           22 2006
           22 2006

और इसी तरह। अब जब मैं सभी फाइलों को एक सीएसवी में मर्ज करता हूं तो मुझे आउटपुट चाहिए

   id date 
   21 2001
   21 2002
   21 2003
   21 2006
   21 2005
   21 2007
   22 2001
   22 2001
   22 2002
   22 2006
   22 2006

कोड:

All <- lapply(filenames_list,function(filename){
  print(paste("Merging",filename,sep = " "))
  read.csv(filename)
})

df <- data.frame(do.call(rbind.data.frame, All))
write.csv(df,merge_file_name)

यह वह कोड है जो मैंने सभी फाइलों को एक सीएसवी में मर्ज करने के लिए किया था। कृपया उन्हें एक संगठित पैटर्न में रखने में मेरी मदद करें।

dput(head(newdata1,10))
structure(list(X = 1:10, gvkey = c(7041L, 7041L, 7041L, 7041L, 
7041L, 7041L, 7041L, 7041L, 7041L, 7041L), datadate = c(20000103L, 
20000104L, 20000105L, 20000106L, 20000111L, 20000112L, 20000113L, 
20000114L, 20000117L, 20000118L), cshoc = c(4.2e+07, 4.2e+07, 
4.2e+07, 4.2e+07, 4.2e+07, 4.2e+07, 4.2e+07, 4.2e+07, 4.2e+07, 
4.2e+07), cshtrd = c(112000, 637000, 241000, 251000, 224000, 
194000, 175000, 217000, 307000, 326000), prccd = c(3.86, 4.28, 
4, 4.04, 4, 3.96, 3.92, 3.96, 4.06, 4.14), prchd = c(3.86, 4.6, 
4.22, 4.26, 4.26, 4.04, 4.1, 4.02, 4.2, 4.3), prcld = c(3.3, 
3.86, 3.9, 3.96, 4, 3.9, 3.92, 3.88, 4, 4.02), prcstd = c(10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L), qunit = c(1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), cheqv = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), cheqvgross = c(NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), 
    div = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), divd = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_), divdgross = c(NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_), divdnet = c(NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), divdtm = c("", "", "", "", "", "", "", "", "", 
    ""), divgross = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
    ), divnet = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), divrc = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_), divrcgross = c(NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_), divrcnet = c(NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), divsp = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
    ), divspgross = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
    ), divspnet = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), divsptm = c("", 
    "", "", "", "", "", "", "", "", ""), anncdate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), cheqvpaydate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), divdpaydate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), divrcpaydate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), divsppaydate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), paydate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), recorddate = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), split = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_), splitf = c("", "", "", "", 
    "", "", "", "", "", ""), trfd = c(1.05474854, 1.05474854, 
    1.05474854, 1.05474854, 1.05474854, 1.05474854, 1.05474854, 
    1.05474854, 1.05474854, 1.05474854), monthend = c(0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), fyrc = c(3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L), ggroup = c(2010L, 2010L, 2010L, 
    2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L), gind = c(201070L, 
    201070L, 201070L, 201070L, 201070L, 201070L, 201070L, 201070L, 
    201070L, 201070L), gsector = c(20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L), gsubind = c(20107010L, 20107010L, 20107010L, 
    20107010L, 20107010L, 20107010L, 20107010L, 20107010L, 20107010L, 
    20107010L), naics = c(999990L, 999990L, 999990L, 999990L, 
    999990L, 999990L, 999990L, 999990L, 999990L, 999990L), sic = c(9995L, 
    9995L, 9995L, 9995L, 9995L, 9995L, 9995L, 9995L, 9995L, 9995L
    ), spcindcd = c(400L, 400L, 400L, 400L, 400L, 400L, 400L, 
    400L, 400L, 400L), spcseccd = c(970L, 970L, 970L, 970L, 970L, 
    970L, 970L, 970L, 970L, 970L), ipodate = c(19920103L, 19920103L, 
    19920103L, 19920103L, 19920103L, 19920103L, 19920103L, 19920103L, 
    19920103L, 19920103L)), row.names = c(NA, 10L), class = "data.frame")

Output after merging 3-4 file of csv

r csv
0
NIrbhay Mathur 10 सितंबर 2020, 11:21

1 उत्तर

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

यदि मैं आपके आदर्श परिणाम को सही ढंग से समझता हूं, तो आप कॉलम आईडी द्वारा data.frame df को ऑर्डर करना चाहते हैं और फिर इसे एक csv फ़ाइल के रूप में सहेजना चाहते हैं। यदि ऐसा है, तो अपने कोड में आप ऑर्डर () का उपयोग करके एक लाइन जोड़ सकते हैं और आईडी द्वारा आरोही क्रम में सॉर्ट कर सकते हैं और फिर उस डेटा फ्रेम को सहेज सकते हैं। वर्गाकार कोष्ठकों के अंदर आदेश डालकर [] यह आपके शेष डेटा को बरकरार रखता है। अल्पविराम से पहले क्रम लगाकर, कोष्ठक के अंदर, डेटा पंक्ति मानों द्वारा क्रमित हो जाता है।

के बजाए:

df <- data.frame(do.call(rbind.data.frame, All))
write.csv(df,merge_file_name)

आदेश के साथ पंक्ति जोड़ें:

df <- data.frame(do.call(rbind.data.frame, All))
new_df <- df[order(df$id),] 
write.csv(new_df,merge_file_name)

एक पूर्ण उदाहरण के लिए:

# Create two data frames
df1 <- data.frame(gvkey = c(1:6),
                  dat = runif(6))

df2 <- data.frame(gvkey = c(1:6),
                  dat = runif(6))

# bind them by the rows 
df <- rbind(df1, df2)

# order by gvkey
new_df <- df[order(df$gvkey),] 
1
eco-Alys 11 सितंबर 2020, 06:30