我有一个R脚本,可以生成一个表格,其中包含单个动物的天数和距离:
即
bill_distance_table =
|day|distance| date |
| 1 | 100 | 04-10-2018 |
| 2 | 150 | 04-11-2018 |
| 3 | 125 | 04-12-2018 |
现在,我想在一组动物上运行此脚本,并将结果表保存到另一个表或数据框中。然后,说我要访问“动物X”距离表,我可以只引用最终表中的该行以返回距离表:
即
global_table:
|animal| name | table_reference |
| 1 | bill | bill_distance_table |
| 2 | joe | joe_distance_table |
| 3 | sue | sue_distance_table |
global_table[1,3]
(would return)
|day|distance| date |
| 1 | 100 | 04-10-2018 |
| 2 | 150 | 04-11-2018 |
| 3 | 125 | 04-12-2018 |
我想知道,R可以做到吗?要在表格中嵌套表格?
或者,创建表列表并仅在全局表中引用保存引用键会更容易吗?
谢谢!
HH
我是R的新手,不确定它在Object方面的潜力。
答案 0 :(得分:0)
是,使用tidyr包,但是数据应该已经在一个数据帧中,例如:
# Give each a dataframe a column with the appropriate name.
bill_dist$animal <- "bill"
joe_dist$animal <- "joe"
sue_dist$animal <- "sue"
# Bind dataframes together.
dist_df <- rbind(bill_dist, joe_dist, sue_dist)
dist_df
#### OUTPUT ####
# A tibble: 9 x 4
day dist date animal
<int> <dbl> <date> <chr>
1 1 100 2018-10-04 bill
2 2 150 2018-11-04 bill
3 3 125 2018-12-04 bill
4 1 130 2018-10-04 joe
5 2 110 2018-11-04 joe
6 3 90 2018-12-04 joe
7 1 160 2018-10-04 sue
8 2 155 2018-11-04 sue
9 3 140 2018-12-04 sue
这种“长”数据框可能比嵌套数据框更有用,即,它更易于操作以进行分析,因此请考虑坚持使用。也就是说,一旦有了此数据框,就可以运行以下命令来获取嵌套的数据框:
library(tidyr)
nested_dist_df <- nest(dist_df, -animal)
nested_dist_df
#### OUTPUT ####
# A tibble: 3 x 2
animal data
<chr> <list>
1 bill <tibble [3 × 3]>
2 joe <tibble [3 × 3]>
3 sue <tibble [3 × 3]>
您现在可以使用[[
语法访问各个数据帧:
nested_dist_df[[1, 2]]
#### OUTPUT ####
# A tibble: 3 x 3
day dist date
<int> <dbl> <date>
1 1 100 2018-10-04
2 2 150 2018-11-04
3 3 125 2018-12-04