我有一个数据列表。在此列表中,它是数据表或数据框。遇到这个问题后,我会绑定(bind)列表。
数据示例:
players
$`0001playeraway`
key NO MIN 2PTM 2PTA 2PT(%) 3PTM 3PTA 3PT(%) FGM FGA FG(%) FTM FTA FT(%) OR DR REB AST TO STL BS PF
1: * 17 40:00:00 9 15 60 0 0 0 9 15 60 2 4 50 1 8 9 2 4 1 2 1
2: * 16 40:00:00 4 8 50 8 13 62 12 21 57 20 22 91 2 3 5 4 4 0 0 3
3: * 10 33:02:00 2 4 50 0 3 0 2 7 29 0 0 0 0 4 4 1 3 1 0 4
4: * 3 27:46:00 2 3 67 0 0 0 2 3 67 6 6 100 1 4 5 0 1 4 0 3
5: 1 26:24:00 1 1 100 0 2 0 1 3 33 1 2 50 1 0 1 1 0 1 0 4
$`0102playeraway`
key NO MIN 2PTM 2PTA 2PT(%) 3PTM 3PTA 3PT(%) FGM FGA FG(%) FTM FTA FT(%) OR DR REB AST TO STL BS PF
1: * 9 40:00:00 1 3 33 2 7 29 3 10 30 3 4 75 1 4 5 8 1 4 1 3
2: * 53 38:18:00 6 14 43 0 0 0 6 14 43 6 8 75 5 3 8 3 4 0 2 5
3: * 13 35:16:00 3 8 38 1 2 50 4 10 40 2 5 40 1 3 4 5 0 0 0 5
4: * 23 31:42:00 2 7 29 2 8 25 4 15 27 7 7 100 1 7 8 1 1 0 0 2
5: 14 22:08 2 3 67 2 4 50 4 7 57 0 0 0 0 2 2 2 1 0 0 1
其余省略。
如何为列表中的数据表名称赋值?
所需输出:
players
$`0001playeraway`
year key NO MIN 2PTM 2PTA 2PT(%) 3PTM 3PTA 3PT(%) FGM FGA FG(%) FTM FTA FT(%) OR DR REB AST TO STL BS PF
1: 0001 * 17 40:00:00 9 15 60 0 0 0 9 15 60 2 4 50 1 8 9 2 4 1 2 1
2: 0001 * 16 40:00:00 4 8 50 8 13 62 12 21 57 20 22 91 2 3 5 4 4 0 0 3
3: 0001 * 10 33:02:00 2 4 50 0 3 0 2 7 29 0 0 0 0 4 4 1 3 1 0 4
4: 0001 * 3 27:46:00 2 3 67 0 0 0 2 3 67 6 6 100 1 4 5 0 1 4 0 3
5: 0001 1 26:24:00 1 1 100 0 2 0 1 3 33 1 2 50 1 0 1 1 0 1 0 4
$`0102playeraway`
year key NO MIN 2PTM 2PTA 2PT(%) 3PTM 3PTA 3PT(%) FGM FGA FG(%) FTM FTA FT(%) OR DR REB AST TO STL BS PF
1: 0102 * 9 40:00:00 1 3 33 2 7 29 3 10 30 3 4 75 1 4 5 8 1 4 1 3
2: 0102 * 53 38:18:00 6 14 43 0 0 0 6 14 43 6 8 75 5 3 8 3 4 0 2 5
3: 0102 * 13 35:16:00 3 8 38 1 2 50 4 10 40 2 5 40 1 3 4 5 0 0 0 5
4: 0102 * 23 31:42:00 2 7 29 2 8 25 4 15 27 7 7 100 1 7 8 1 1 0 0 2
5: 0102 14 22:08 2 3 67 2 4 50 4 7 57 0 0 0 0 2 2 2 1 0 0 1
最佳答案
您可以使用 purrr::imap 和 dplyr::mutate 向列表中的所有数据帧添加一列,其中包含每个元素的名称。在这里,我还使用 sringr::str_extract
来根据需要获取名称的数字部分。
#some data to work with as an example:
df1 <- data.frame(x = 1:3, y=letters[1:3])
listdfs <- list("tr088text" = df1,"character963" = df1,"00123string" = df1)
library(tidyverse)
imap(listdfs, ~mutate(year = str_extract(.y, "\\-*\\d+\\.*\\d*") , .x))
#> $tr088text
#> x y year
#> 1 1 a 088
#> 2 2 b 088
#> 3 3 c 088
#>
#> $character963
#> x y year
#> 1 1 a 963
#> 2 2 b 963
#> 3 3 c 963
#>
#> $`00123string`
#> x y year
#> 1 1 a 00123
#> 2 2 b 00123
#> 3 3 c 00123
由reprex package于2019年6月15日创建(v0.3.0)
关于r - 将数据框列表的名称的数字部分添加为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608540/