使用数据框列表时将列表名称放入数据框列
Put list name into dataframe column when working with list of dataframes
我有一个数据框列表,每个列表的名称都有需要传递到列的信息(我将绑定所有数据框)。有没有办法获取此列表名称并将其作为列中的标签?
如果列表开始时看起来像这样 head(my_list)
$day0005
# A tibble: 24 x 4
TSOIL1 lon lat TIME
<dbl> <dbl> <dbl> <dbl>
1 265 -95.8 45.7 0
2 265 -95.8 45.7 60.0
3 265 -95.8 45.7 120
4 265 -95.8 45.7 180
5 265 -95.8 45.7 240
我希望每一个看起来都像
$day0005
# A tibble: 24 x 4
TSOIL1 lon lat TIME day
<dbl> <dbl> <dbl> <dbl> day0005
1 265 -95.8 45.7 0 day0005
2 265 -95.8 45.7 60.0 day0005
3 265 -95.8 45.7 120 day0005
4 265 -95.8 45.7 180 day0005
5 265 -95.8 45.7 240 day0005
如果您的数据以列表开头,因此您在搜索词中包含了 "list",那么恭喜您,您找到了正确的问题。这里的答案很简单也很棒。
如果您从一堆数据框开始,您可能还想看看与此问题类似的问题。他们将向您展示如何将一堆数据框转换为数据框列表。然后返回此处获取与识别和绑定所有行相关的最简单答案。
试试这个:
dl <-list(data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11))
names(dl) <- c("one","two","three","four")
dl <- Map(cbind,dl,"names" = names(dl))
您可以使用 dplyr::bind_rows()
:
library(dplyr)
mylist <- list(x = data.frame(a = 1:10),
y = data.frame(a = 11:20))
mydf <- mylist %>%
bind_rows(.id = "dfname")
mydf
dfname a
1 x 1
2 x 2
3 x 3
4 x 4
5 x 5
6 x 6
7 x 7
8 x 8
9 x 9
10 x 10
11 y 11
12 y 12
13 y 13
14 y 14
15 y 15
16 y 16
17 y 17
18 y 18
19 y 19
20 y 20
我有一个数据框列表,每个列表的名称都有需要传递到列的信息(我将绑定所有数据框)。有没有办法获取此列表名称并将其作为列中的标签?
如果列表开始时看起来像这样 head(my_list)
$day0005
# A tibble: 24 x 4
TSOIL1 lon lat TIME
<dbl> <dbl> <dbl> <dbl>
1 265 -95.8 45.7 0
2 265 -95.8 45.7 60.0
3 265 -95.8 45.7 120
4 265 -95.8 45.7 180
5 265 -95.8 45.7 240
我希望每一个看起来都像
$day0005
# A tibble: 24 x 4
TSOIL1 lon lat TIME day
<dbl> <dbl> <dbl> <dbl> day0005
1 265 -95.8 45.7 0 day0005
2 265 -95.8 45.7 60.0 day0005
3 265 -95.8 45.7 120 day0005
4 265 -95.8 45.7 180 day0005
5 265 -95.8 45.7 240 day0005
如果您的数据以列表开头,因此您在搜索词中包含了 "list",那么恭喜您,您找到了正确的问题。这里的答案很简单也很棒。
如果您从一堆数据框开始,您可能还想看看与此问题类似的问题。他们将向您展示如何将一堆数据框转换为数据框列表。然后返回此处获取与识别和绑定所有行相关的最简单答案。
试试这个:
dl <-list(data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11))
names(dl) <- c("one","two","three","four")
dl <- Map(cbind,dl,"names" = names(dl))
您可以使用 dplyr::bind_rows()
:
library(dplyr)
mylist <- list(x = data.frame(a = 1:10),
y = data.frame(a = 11:20))
mydf <- mylist %>%
bind_rows(.id = "dfname")
mydf
dfname a
1 x 1
2 x 2
3 x 3
4 x 4
5 x 5
6 x 6
7 x 7
8 x 8
9 x 9
10 x 10
11 y 11
12 y 12
13 y 13
14 y 14
15 y 15
16 y 16
17 y 17
18 y 18
19 y 19
20 y 20