Как создать tibble в r?

#r #dataframe

#r #фрейм данных

Вопрос:

Как создать tibble в r, у которого есть имя, указанное на рисунке. Я хочу, чтобы структура доступа к объекту была такой:

 S10m$ALAEF$validdate
S10m -object
ALAEF - dataframe/table name
validdate is column name in dataframe
  

введите описание изображения здесь

Я вижу, что я не был ясен. Я хочу что-то вроде этого:

     > str(u10)
List of 1
 $ ALAEF: tibble [4,624 x 12] (S3: tbl_df/tbl/data.frame)
  ..$ SID         : int [1:4624] 11060 11080 11800 11803 11805 11806 11810 11812 11813 11815 ...
  ..$ fcdate      : int [1:4624] 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 ...
  ..$ fcst_cycle  : chr [1:4624] "00" "00" "00" "00" ...
  ..$ leadtime    : int [1:4624] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ parameter   : chr [1:4624] "u10m" "u10m" "u10m" "u10m" ...
  ..$ units       : chr [1:4624] "m/s" "m/s" "m/s" "m/s" ...
  ..$ validdate   : int [1:4624] 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 ...
  ..$ z           : int [1:4624] 10 10 10 10 10 10 10 10 10 10 ...
  ..$ ALAEF_mbr000: num [1:4624] 0.651 0.635 -0.451 -0.662 -1.357 ...
  ..$ ALAEF_mbr001: num [1:4624] 0.654 0.842 -0.471 -0.502 -1.346 ...
  ..$ ALAEF_mbr002: num [1:4624] 0.736 0.619 -0.108 -0.53 -1.631 ...
  ..$ ALAEF_mbr003: num [1:4624] 0.815 0.8 -0.286 -0.271 -1.615 ...
  

но мои созданные данные выглядят так:

 > str(wind)
tibble [4,624 x 17] (S3: tbl_df/tbl/data.frame)
 $ SID           : int [1:4624] 11060 11080 11800 11803 11805 11806 11810 11812 11813 11815 ...
 $ fcdate        : int [1:4624] 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 ...
 $ fcst_cycle    : chr [1:4624] "00" "00" "00" "00" ...
 $ leadtime      : int [1:4624] 0 0 0 0 0 0 0 0 0 0 ...
 $ parameter.x   : chr [1:4624] "u10m" "u10m" "u10m" "u10m" ...
 $ units         : chr [1:4624] "m/s" "m/s" "m/s" "m/s" ...
 $ validdate     : int [1:4624] 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 1597968000 ...
 $ z             : int [1:4624] 10 10 10 10 10 10 10 10 10 10 ...
 $ ALAEF_mbr000.x: num [1:4624] 0.651 0.635 -0.451 -0.662 -1.357 ...
 $ ALAEF_mbr001.x: num [1:4624] 0.654 0.842 -0.471 -0.502 -1.346 ...
  

Как мы можем видеть, у объекта wind нет $ ALAEF: tibble […………] часть

Атрибуты для u10:

 > attributes(u10)
$names
[1] "ALAEF"
  

Атрибуты для wind:

 > attributes(wind)
$names
 [1] "SID"            "fcdate"         "fcst_cycle"     "leadtime"
 [5] "parameter.x"    "units"          "validdate"      "z"
 [9] "ALAEF_mbr000.x" "ALAEF_mbr001.x" "ALAEF_mbr002.x" "ALAEF_mbr003.x"
[13] "parameter.y"    "ALAEF_mbr000.y" "ALAEF_mbr001.y" "ALAEF_mbr002.y"
[17] "ALAEF_mbr003.y"

$row.names
   [1]    1    2    3    4    5    6    7    8    9   10   11   12   13   14
  [15]   15   16   17   18   19   20   21   22   23   24   25   26   27   28
  [29]   29   30   31   32   33   34   35   36   37   38   39   40   41   42
  [43]   43   44   45   46   47   48   49   50   51   52   53   54   55   56
  

Можете ли вы привести мне какой-нибудь пример, как это сделать в r?

Ответ №1:

Вы могли бы вложить фрейм данных (или tibble) внутрь tibble:

 library(tibble)

S10m <- tibble(
  ALAEF = data.frame(
    validdate = as.Date(numeric(0))
  )
)
  

Альтернативой tibble может быть именованный список. Ваш выбор структуры данных зависит от вашего конкретного варианта использования.