2014-12-09 4 views
0

У меня есть некоторые кадры данных с различным количеством столбцов и столбцами с разными именами, которые я хочу связать вместе. Я бы хотел, чтобы строка привязывала файл данных euro.fix.data к фрейму данных euro.prefix.data. Я предполагаю, что это может включать в себя копирование столбцов и их переименование, поэтому data.frames совместимы, но я ищу более простой способ. Нужно ли вообще игнорировать соглашение об именах и просто связывать, если кадры данных имеют одинаковое количество столбцов?связать разный размер разные данные dataframes

В любом случае, я даже не могу определить, как скопировать столбец фрейма данных, не делая жестко заданное явное назначение столько раз, сколько хотелось бы, чтобы в кадре данных были столбцы.

желательно из пут будет что-то вроде:

epd <- euro.fix.data[which(euro.fix.data$date >= init.euro.fix.date), ] 

df <- data.frame(date = epd$date, DEM.Curncy = epd$EUR.Curncy, ATS.Curncy = epd$EUR.Curncy, BEF.Curncy = epd$EUR.Curncy, NLG.Curncy = epd$EUR.Curncy, FIM.Curncy = epd$EUR.Curncy, FRF.Curncy = epd$EUR.Curncy, IEP.Curncy = epd$EUR.Curncy, ITL.Curncy = epd$EUR.Curncy, PTE.Curncy = epd$EUR.Curncy, ESP.Curncy = epd$EUR.Curncy, DKK.Curncy = epd$EUR.Curncy) 

results <- rbind(euro.prefix.data, df) 

Очевидно, что это действительно плохое решение. Я ищу что-то, что можно было бы обобщить. Старт должен состоять в том, чтобы просто создать кадр данных, который многократно повторяется в столбце.

Любое руководство оценено. Благодарю.

head(euro.prefix.data) 
     date DEM.Curncy ATS.Curncy BEF.Curncy NLG.Curncy FIM.Curncy FRF.Curncy IEP.Curncy ITL.Curncy PTE.Curncy 
1 1988-12-30 -0.000677 -0.000721 -0.0009014423 -0.000649 0.000090 0.000099 -0.001141827 -0.0004649038 0.000935 
2 1989-01-06 -0.000910 -0.000608 -0.0009134615 -0.000830 0.000384 -0.000323 -0.001153846 -0.0004711538 0.000674 
3 1989-01-13 0.000109 0.001022 -0.0009134615 0.000205 0.000971 0.000600 -0.001153846 -0.0004711538 0.000660 
4 1989-01-20 -0.000990 0.001100 -0.0009134615 0.000060 -0.000029 0.000199 -0.001153846 -0.0004711538 0.002389 
5 1989-01-27 -0.000134 -0.001147 -0.0009134615 -0.001331 -0.000989 -0.001459 -0.001153846 -0.0004711538 -0.000821 
6 1989-02-03 -0.000133 -0.001151 -0.0010697115 -0.001743 -0.000778 0.000137 -0.001310096 -0.0006197115 0.000695 
    ESP.Curncy DKK.Curncy 
1 -0.001635 -0.000055 
2 0.002641 -0.003195 
3 0.003452 -0.001496 
4 -0.001926 -0.000402 
5 0.001750 -0.001642 
6 -0.000844 -0.001076 



> head(euro.fix.data[which(euro.fix.data$date >= init.euro.fix.date), ]) 
      date EUR.Curncy 
105 1999-01-01 -0.0004074215 
106 1999-01-08 -0.0003545854 
107 1999-01-15 -0.0003652404 
108 1999-01-22 -0.0003650181 
109 1999-01-29 -0.0003209615 
110 1999-02-05 -0.0003106008 
+0

Посмотрите на '? Merge'. – jbaums

+0

спасибо @jbaums. насколько я знаю, по крайней мере, как я его использовал, merge() является объединением и полагается на сопоставление общих значений данных в определенных столбцах (или строках?). в любом случае, нет общих значений данных в двух кадрах данных. его стек, который я пытаюсь сделать, или «привязка» – user3385769

+0

Это может помочь показать, как будет выглядеть ваш желаемый результат, если базовое слияние не является вашей целью. – cdeterman

ответ

0

Попробуйте это ... учти это предположение, потому что у меня почти столько же трудности, с вашей проблемой презентации, как и другие комментаторам:

post.fix <- data.frame(date=euro.prefix.data$date, 
         stack(euro.prefix.data[-1]) 

Это показывает структуру результата, который очевидно, нонсенс, но показывает, что вам, вероятно, нужно сохранять информацию о том, какая валюта записывается, и это не то, о чем, по-видимому, рассматривает ваше текущее описание проблемы. Даты реплицируются в процессе переработки аргументов R.

> str(data.frame(mpg=mtcars$mpg, stack(mtcars[-1]))) 
'data.frame': 320 obs. of 3 variables: 
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
$ values: num 6 6 4 6 8 6 8 4 4 6 ... 
$ ind : Factor w/ 10 levels "am","carb","cyl",..: 3 3 3 3 3 3 3 3 3 3 ...