2017-03-05 29 views
0

我有一個是從一個定義的函數返回了以下列表:將數據框列表('長格式')轉換爲整潔的表格以便輸出?

$JPY 
     dev20  dev50 RSI Alert.dates 
1 0.1540239 0.7701194 25.071 2017-02-23 

$CHF 
     dev20  dev50  RSI Alert.dates 
1 -0.03279405 0.6012243 29.78284 2017-02-23 

而且我想這個轉換成表格這樣的:

Currency Dates  % Deviation 20MA % Deviation 50MA  RSI 
JPY  2017-02-23  -0.6968559  0.3526983  44.68176 
CHF  2017-02-15  0.1920461  1.027927   52.27664 

我想的也許unlisting,但返回:

JPY.dev20  JPY.dev50   JPY.RSI JPY.Alert.dates  CHF.dev20  CHF.dev50   CHF.RSI 
    1.540239e-01 7.701194e-01 2.507100e+01 1.487830e+09 -3.279405e-02 6.012243e-01 2.978284e+01 

而我不知道它從哪裏拉這些值。非常感謝幫助!

附件是一個樣本dput:

structure(list(JPY = structure(list(dev20 = 0.15402387370042, 
    dev50 = 0.770119368502115, RSI = 25.0710018074629, Alert.dates = structure(1487829600, class = c("POSIXct", 
    "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", "RSI", 
"Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CHF = structure(list(dev20 = -0.032794053345002, dev50 = 0.601224311324886, 
     RSI = 29.782838407164, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CAD = structure(list(dev20 = 0.0368154624942435, dev50 = -0.589047399907958, 
     RSI = 36.8185395021506, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    SEK = structure(list(dev20 = -0.31944744226203, dev50 = 1.09935966616304, 
     RSI = 28.7420749197979, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    NOK = structure(list(dev20 = 0.0145621642612077, dev50 = -22.9434988026665, 
     RSI = 26.916564089549, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    HUF = structure(list(dev20 = -0.869198312236288, dev50 = 1.47257383966245, 
     RSI = 35.1942413992149, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    ILS = structure(list(dev20 = 0.535966149506351, dev50 = 1.70944992947814, 
     RSI = 31.1021889147085, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    PLN = structure(list(dev20 = -0.644026263705185, dev50 = 1.76243284848103, 
     RSI = 32.1167113843954, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    RUB = structure(list(dev20 = -0.0708237545157256, dev50 = 1.65778989904759, 
     RSI = 28.8003054628427, Alert.dates = structure(1487743200, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    TRY = structure(list(dev20 = -0.190343546889518, dev50 = -0.0835654596100187, 
     RSI = 30.9120856971577, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    ZAR = structure(list(dev20 = -0.35993931913049, dev50 = -0.0951672021784934, 
     RSI = 29.3075076243689, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    BRL = structure(list(dev20 = 0.309500313985822, dev50 = 0.0717681887503484, 
     RSI = 36.268340221486, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CLP = structure(list(dev20 = -0.899000911511854, dev50 = 1.98566602920413, 
     RSI = 33.7186834724809, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    COP = structure(list(dev20 = -0.0964268495205418, dev50 = 0.0380350350886611, 
     RSI = 39.2685326515606, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    MXN = structure(list(dev20 = -0.00917122680443107, dev50 = -0.46314695362417, 
     RSI = 37.822734568689, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    PEN = structure(list(dev20 = -0.0789294299142452, dev50 = 0.175797366627191, 
     RSI = 31.0501340963476, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    INR = structure(list(dev20 = -1.28960637261133, dev50 = -1663.43222744799, 
     RSI = 1.36263452994899, Alert.dates = structure(1487743200, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame")), .Names = c("JPY", 
"CHF", "CAD", "SEK", "NOK", "HUF", "ILS", "PLN", "RUB", "TRY", 
"ZAR", "BRL", "CLP", "COP", "MXN", "PEN", "INR")) 
structure(list(JPY = structure(list(dev20 = 0.15402387370042, 
    dev50 = 0.770119368502115, RSI = 25.0710018074629, Alert.dates = structure(1487829600, class = c("POSIXct", 
    "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", "RSI", 
"Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CHF = structure(list(dev20 = -0.032794053345002, dev50 = 0.601224311324886, 
     RSI = 29.782838407164, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CAD = structure(list(dev20 = 0.0368154624942435, dev50 = -0.589047399907958, 
     RSI = 36.8185395021506, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    SEK = structure(list(dev20 = -0.31944744226203, dev50 = 1.09935966616304, 
     RSI = 28.7420749197979, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    NOK = structure(list(dev20 = 0.0145621642612077, dev50 = -22.9434988026665, 
     RSI = 26.916564089549, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    HUF = structure(list(dev20 = -0.869198312236288, dev50 = 1.47257383966245, 
     RSI = 35.1942413992149, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    ILS = structure(list(dev20 = 0.535966149506351, dev50 = 1.70944992947814, 
     RSI = 31.1021889147085, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    PLN = structure(list(dev20 = -0.644026263705185, dev50 = 1.76243284848103, 
     RSI = 32.1167113843954, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    RUB = structure(list(dev20 = -0.0708237545157256, dev50 = 1.65778989904759, 
     RSI = 28.8003054628427, Alert.dates = structure(1487743200, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    TRY = structure(list(dev20 = -0.190343546889518, dev50 = -0.0835654596100187, 
     RSI = 30.9120856971577, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    ZAR = structure(list(dev20 = -0.35993931913049, dev50 = -0.0951672021784934, 
     RSI = 29.3075076243689, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    BRL = structure(list(dev20 = 0.309500313985822, dev50 = 0.0717681887503484, 
     RSI = 36.268340221486, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    CLP = structure(list(dev20 = -0.899000911511854, dev50 = 1.98566602920413, 
     RSI = 33.7186834724809, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    COP = structure(list(dev20 = -0.0964268495205418, dev50 = 0.0380350350886611, 
     RSI = 39.2685326515606, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    MXN = structure(list(dev20 = -0.00917122680443107, dev50 = -0.46314695362417, 
     RSI = 37.822734568689, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    PEN = structure(list(dev20 = -0.0789294299142452, dev50 = 0.175797366627191, 
     RSI = 31.0501340963476, Alert.dates = structure(1487829600, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame"), 
    INR = structure(list(dev20 = -1.28960637261133, dev50 = -1663.43222744799, 
     RSI = 1.36263452994899, Alert.dates = structure(1487743200, class = c("POSIXct", 
     "POSIXt"), tzone = "")), .Names = c("dev20", "dev50", 
    "RSI", "Alert.dates"), row.names = c(NA, -1L), class = "data.frame")), .Names = c("JPY", 
"CHF", "CAD", "SEK", "NOK", "HUF", "ILS", "PLN", "RUB", "TRY", 
"ZAR", "BRL", "CLP", "COP", "MXN", "PEN", "INR")) 

回答

1

選項1:從dplyr,其中df是你的數據幀列表使用bind_rows

library(dplyr) 
bind_rows(df, .id="Currency") 
# Currency  dev20   dev50  RSI   Alert.dates 
# 1  JPY 0.154023874 7.701194e-01 25.071002 2017-02-23 11:30:00 
# 2  CHF -0.032794053 6.012243e-01 29.782838 2017-02-23 11:30:00 
# 3  CAD 0.036815462 -5.890474e-01 36.818540 2017-02-23 11:30:00 
# 4  SEK -0.319447442 1.099360e+00 28.742075 2017-02-23 11:30:00 
# 5  NOK 0.014562164 -2.294350e+01 26.916564 2017-02-23 11:30:00 
# 6  HUF -0.869198312 1.472574e+00 35.194241 2017-02-23 11:30:00 
# 7  ILS 0.535966150 1.709450e+00 31.102189 2017-02-23 11:30:00 
# 8  PLN -0.644026264 1.762433e+00 32.116711 2017-02-23 11:30:00 
# 9  RUB -0.070823755 1.657790e+00 28.800305 2017-02-22 11:30:00 
# 10  TRY -0.190343547 -8.356546e-02 30.912086 2017-02-23 11:30:00 
# 11  ZAR -0.359939319 -9.516720e-02 29.307508 2017-02-23 11:30:00 
# 12  BRL 0.309500314 7.176819e-02 36.268340 2017-02-23 11:30:00 
# 13  CLP -0.899000912 1.985666e+00 33.718683 2017-02-23 11:30:00 
# 14  COP -0.096426850 3.803504e-02 39.268533 2017-02-23 11:30:00 
# 15  MXN -0.009171227 -4.631470e-01 37.822735 2017-02-23 11:30:00 
# 16  PEN -0.078929430 1.757974e-01 31.050134 2017-02-23 11:30:00 
# 17  INR -1.289606373 -1.663432e+03 1.362635 2017-02-22 11:30:00 

選項2:從data.table

library(data.table) 
rbindlist(df, idcol="Currency") 
# Currency  dev20   dev50  RSI   Alert.dates 
# 1:  JPY 0.154023874 7.701194e-01 25.071002 2017-02-23 11:30:00 
# 2:  CHF -0.032794053 6.012243e-01 29.782838 2017-02-23 11:30:00 
# 3:  CAD 0.036815462 -5.890474e-01 36.818540 2017-02-23 11:30:00 
# 4:  SEK -0.319447442 1.099360e+00 28.742075 2017-02-23 11:30:00 
# 5:  NOK 0.014562164 -2.294350e+01 26.916564 2017-02-23 11:30:00 
# 6:  HUF -0.869198312 1.472574e+00 35.194241 2017-02-23 11:30:00 
# 7:  ILS 0.535966150 1.709450e+00 31.102189 2017-02-23 11:30:00 
# 8:  PLN -0.644026264 1.762433e+00 32.116711 2017-02-23 11:30:00 
# 9:  RUB -0.070823755 1.657790e+00 28.800305 2017-02-22 11:30:00 
# 10:  TRY -0.190343547 -8.356546e-02 30.912086 2017-02-23 11:30:00 
# 11:  ZAR -0.359939319 -9.516720e-02 29.307508 2017-02-23 11:30:00 
# 12:  BRL 0.309500314 7.176819e-02 36.268340 2017-02-23 11:30:00 
# 13:  CLP -0.899000912 1.985666e+00 33.718683 2017-02-23 11:30:00 
# 14:  COP -0.096426850 3.803504e-02 39.268533 2017-02-23 11:30:00 
# 15:  MXN -0.009171227 -4.631470e-01 37.822735 2017-02-23 11:30:00 
# 16:  PEN -0.078929430 1.757974e-01 31.050134 2017-02-23 11:30:00 
# 17:  INR -1.289606373 -1.663432e+03 1.362635 2017-02-22 11:30:00 
+0

謝謝!這工作! – Nikitau

0

使用rbindlist我們可以使用Map創建列 '貨幣',然後rbind

do.call(rbind, Map(cbind, list_df, Currency = names(list_df))) 
相關問題