2010-11-16 14 views
5

मैंने कुछ डेटा फ्रेम में सीएसवी फ़ाइलों को विलय करने के बारे में कुछ questions देखा है। क्या होगा यदि डेटा फ्रेम पहले से ही वर्कस्पेस में हैं। मेरे पास पांच चौड़े चिड़ियाघर हैं जिन्हें मैंने डेटा फ्रेम के रूप में डाला, फिर पिघला दिया। यहाँ एक के सिर है:दो सामान्य कॉलम पर कई डेटा फ्रेम मर्ज करें

> head(df.mon.ssf.ret) 
     date variable value 
1 2009.000  AA1C NA 
2 2009.083  AA1C NA 
3 2009.167  AA1C NA 
4 2009.250  AA1C NA 
5 2009.333  AA1C NA 
6 2009.417  AA1C NA 

मैं "तिथि" और नेस्टेड का आपस में विलय की एक श्रृंखला के साथ "चर" पर इन मर्ज कर सकते हैं, लेकिन उस अनाड़ी लगता है। क्या विलय करने के लिए एक और प्रोग्रामेटिक तरीका है?

अगर मुझे विश्वास है कि कॉलम सभी चिड़ियाघर में एक ही क्रम में हैं, तो क्या मुझे विश्वास हो सकता है कि पिघलने से आदेश दिया जाता है और cbind का उपयोग किया जाता है? धन्यवाद!

अद्यतन:

वहाँ कुछ मैं पिघल के उपयोग दर्शन के बारे में याद कर रहा हूँ है।

> temp <- merge(z.ssf.oi, z.ssf.oig, z.ssf.ret) 
> class(temp) 
[1] "zoo" 
> temp2 <- cbind(index(temp), as.data.frame(temp)) 
> class(temp2) 
[1] "data.frame" 
> names(temp2)[1] <- "date" 
> dim(temp2) 
[1] 12 1204 
> temp3 <- melt(temp2, id="date") 
Error in data.frame(ids, variable, value) : 
    arguments imply differing number of rows: 12, 14436 
> head(temp2)[, 1:5] 
      date AA1C.z.ssf.oi AAPL1C.z.ssf.oi ABT1C.z.ssf.oi ABX1C.z.ssf.oi 
Jan 2009 Jan 2009  1895.800  49191.25    NA    NA 
Feb 2009 Feb 2009  1415.579  42650.26    NA  6267.96 
Mar 2009 Mar 2009  1501.398  36712.20    NA  11581.65 
Apr 2009 Apr 2009  1752.936  74376.27    NA  12168.29 
May 2009 May 2009  1942.874  96307.30    NA  13490.60 
Jun 2009 Jun 2009   NA  79170.70    NA  16337.21 

अद्यतन 2:: यहाँ जब मैं एक चिड़ियाघर के रूप में विलय और एक बहुत व्यापक डेटा चिड़ियाघरों में से तीन का उपयोग कर फ्रेम के रूप में पिघल क्या होता है मदद के लिए धन्यवाद! यहाँ एक बहुत ही मैनुअल समाधान

> A <- cbind(index(z.ssf.oi), as.data.frame(z.ssf.oi)) 
> names(A)[1] <- "date" 
> B <- cbind(index(z.ssf.oig), as.data.frame(z.ssf.oig)) 
> names(B)[1] <- "date" 
> C <- cbind(index(z.ssf.ret), as.data.frame(z.ssf.ret)) 
> names(C)[1] <- "date" 
> A.melt <- melt(A, id="date") 
> head(A.melt) 
     date variable value 
1 Jan 2009  A1C NA 
2 Feb 2009  A1C NA 
3 Mar 2009  A1C NA 
4 Apr 2009  A1C NA 
5 May 2009  A1C NA 
6 Jun 2009  A1C NA 
> B.melt <- melt(B, id="date") 
> C.melt <- melt(C, id="date") 
> ans <- merge(merge(A.melt, B.melt, by=c("date", "variable")), C.melt, by=c("date", "variable")) 
> names(ans)[3:5] <- c("oi", "oig", "ret") 
> head(ans) 
     date variable  oi  oig   ret 
1 Apr 2009  A1C  NA  NA   NA 
2 Apr 2009  AA1C  NA  NA   NA 
3 Apr 2009 AAPL1C 59316.88 0.3375786 0.008600073 
4 Apr 2009 ABB1C  NA  NA   NA 
5 Apr 2009 ABT1C  NA  NA   NA 
6 Apr 2009 ABX1C  NA  NA   NA 

है (और NAS घर पर एक अधूरी डाटासेट से हैं और मेरी डेटाबेस से छानने में डायल की आवश्यकता होगी,)

अद्यतन 3: यहाँ कुछ dputs हैं (मैं ले लिया [ 1:10, 1:10] प्रत्येक विस्तृत चिड़ियाघर का सबसेट और डेटा फ्रेम में परिवर्तित)

> dput(A) 
structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), class = "factor", .Label = "oi"), date = structure(c(2009, 
2009.08333333333, 2009.16666666667, 2009.25, 2009.33333333333, 
2009.41666666667, 2009.5, 2009.58333333333, 2009.66666666667, 
2009.75), class = "yearmon"), AA1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), AAPL1C = c(49226.391, 42662.1589473684, 35354.4254545455, 
57161.6495238095, 84362.895, NA, NA, 47011.8519047619, 57852.2171428571, 
33058.0090909091), ABT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), 
    ABX1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ACE1C = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_), ACI1C = c(NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_), ACS1C = c(NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), ADBE1C = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
    ), ADCT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ADI1C = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_)), .Names = c("group", "date", 
"AA1C", "AAPL1C", "ABT1C", "ABX1C", "ACE1C", "ACI1C", "ACS1C", 
"ADBE1C", "ADCT1C", "ADI1C"), row.names = c("Jan 2009", "Feb 2009", 
"Mar 2009", "Apr 2009", "May 2009", "Jun 2009", "Jul 2009", "Aug 2009", 
"Sep 2009", "Oct 2009"), class = "data.frame") 
> dput(B) 
structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), class = "factor", .Label = "oig"), date = structure(c(2009.08333333333, 
2009.16666666667, 2009.25, 2009.33333333333, 2009.41666666667, 
2009.5, 2009.58333333333, 2009.66666666667, 2009.75, 2009.83333333333 
), class = "yearmon"), AA1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), AAPL1C = c(-0.143117562125788, -0.187888745830302, 0.480459636485712, 
0.389244461579155, NA, NA, NA, 0.207492040517069, -0.559627909130612, 
NA), ABT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ABX1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), ACE1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), ACI1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ACS1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), ADBE1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), ADCT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ADI1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_)), .Names = c("group", "date", "AA1C", "AAPL1C", 
"ABT1C", "ABX1C", "ACE1C", "ACI1C", "ACS1C", "ADBE1C", "ADCT1C", 
"ADI1C"), row.names = c("Feb 2009", "Mar 2009", "Apr 2009", "May 2009", 
"Jun 2009", "Jul 2009", "Aug 2009", "Sep 2009", "Oct 2009", "Nov 2009" 
), class = "data.frame") 
> dput(C) 
structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), class = "factor", .Label = "ret"), date = structure(c(2009, 
2009.08333333333, 2009.16666666667, 2009.25, 2009.33333333333, 
2009.41666666667, 2009.5, 2009.58333333333, 2009.66666666667, 
2009.75), class = "yearmon"), AA1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), AAPL1C = c(-0.143117562125788, -0.187888745830302, 0.480459636485712, 
0.389244461579155, NA, NA, NA, 0.207492040517069, -0.559627909130612, 
NA), ABT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ABX1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), ACE1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), ACI1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ACS1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), ADBE1C = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_ 
), ADCT1C = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ADI1C = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_)), .Names = c("group", "date", "AA1C", "AAPL1C", 
"ABT1C", "ABX1C", "ACE1C", "ACI1C", "ACS1C", "ADBE1C", "ADCT1C", 
"ADI1C"), row.names = c("Feb 2009", "Mar 2009", "Apr 2009", "May 2009", 
"Jun 2009", "Jul 2009", "Aug 2009", "Sep 2009", "Oct 2009", "Nov 2009" 
), class = "data.frame") 
+2

क्या आप पहले विस्तृत चिड़ियाघर वस्तुओं को एक साथ विलय कर सकते हैं ('merge.zoo' दो से अधिक वस्तुओं को स्वीकार करता है), फिर पुन: आकार दें? –

+1

क्या आप एक उदाहरण प्रदान कर सकते हैं कि आप उस डेटा को रीशेप/मर्ज ऑपरेशन के साथ करने के बाद क्या दिखाना चाहते हैं? –

उत्तर

6

आप इसे आजमा सकते हैं। आपके उदाहरण के बाद से अनचाहे नहीं है पुन: उत्पन्न नहीं है। यदि आप एक बेहतर उत्तर चाहते हैं तो हमें z.sfff.oi, z.sff.oig और z.sff.ret के लिए कुछ डमी डेटा दें। आप एक पुन: उत्पादित डेटासेट के लिए कोड उत्पन्न करने के लिए dput() का उपयोग कर सकते हैं।

A <- data.frame(Group = "oi", date = as.factor(index(z.ssf.oi),) as.data.frame(z.ssf.oi))) 
B <- data.frame(Group = "oig", date = as.factor(index(z.ssf.oig)), as.data.frame(z.ssf.oig))) 
C <- data.frame(Group = "ret", date = as.factor(index(z.ssf.ret)), as.data.frame(z.ssf.ret))) 
Long <- melt(rbind(A, B, C), id.vars = c("Group", "date"))) 
cast(date ~ Group, data = Long) 
+0

धन्यवाद! मुझे इस तरह सोचने की जरूरत है! मुझे अभी भी वही चेतावनी मिलती है (मैं टिंकरिंग के लिए उपरोक्त एक छोटा सबसेट दूंगा): 'डेटा.फ्रेम (आईडी, चर, मान) में त्रुटि: तर्कों में अलग-अलग पंक्तियों का संकेत है: 30, 300' –

+0

मुझे जोड़ना चाहिए, उस त्रुटि को पाने के लिए कॉल करें 'लंबा <- पिघलाएं (temp, id.vars = c ("group", "date"))' जहां temp तीन डेटा फ्रेमों का रिबिंड है। –

+0

आपको विचार सही है! कुछ और झुकाव के बाद, समस्या इंडेक्स() से प्राप्त वर्ष वर्ग है। तो मैंने लपेट लिया कि। फैक्टर() में और यह अद्भुत काम करता है! सहायता के लिए धन्यवाद! कृपया पोस्टरिटी के लिए उपरोक्त आपके समाधान के रूप में। फैक्टर() या as.character() के रूप में। –

संबंधित मुद्दे