【发布时间】:2022-01-15 19:27:56
【问题描述】:
这是对问题的第三次编辑(以防万一):
以下代码制作了一些示例数据框,选择标题中带有“_areaX”的数据框并列出它们。然后,目标是将列表中的数据框组合成 1 个数据框。它几乎可以工作......
Area1 <- 100
Area2 <- 200
Area3 <- 300
Zone <- 3
a1_areaX <- data.frame(Area1)
a2_areaX <- data.frame(Area2)
a3_areaX <- data.frame(Area3)
a_zoneX <- data.frame(Zone)
library(dplyr)
pattern = "_areaX"
df_list <- mget(ls(envir = globalenv(), pattern = pattern))
big_data = bind_rows(df_list, .id = "FileName")
问题是新创建的数据框是这样的:
我需要它看起来像这样:
| File Name | Area measurement |
|---|---|
| a1_areaX | 100 |
| a2_areaX | 200 |
| a3_areaX | 300 |
以下是我之前提出这个问题的尝试。从第一个版本编辑:
我将 csv 文件导入到 R Global Env 中,看起来像这样(我会分享实际文件,但这里似乎没有办法做到这一点):
它们都有一个名字,上面那个叫做“s6_section_area”。其中有很多(名称不同),我使用以下代码将它们全部放在一个列表中:
pattern = "section_area"
section_area_list <- list(mget(grep(pattern,ls(globalenv()), value = TRUE), globalenv()))
现在我想要一个看起来像这样的新数据框,将上面制作的列表中的数据框放在一起。
| File Name | Area measurement |
|---|---|
| a1_section_area | a number |
| a2_section_area | another number |
| many more | more numbers |
因此,第一列应列出原始文件的名称,第二列应列出该文件中提供的测量值。
希望这更清楚 - 不知道如何在不共享实际文件的情况下提供可重现的示例(这似乎不是一个选项)。
添加编辑:使用此代码
section_area_data <- bind_rows(section_area_list, .id = "FileName")
我明白了(它继续向右)
我正在寻找一个看起来像上面示例的表格,左列是文件名,文件名列表向下。右列是该文件名的测量值(取自原始文件)。
【问题讨论】:
-
你可以使用
bind_rows(section_area_list, .id = "s5_section_area") -
感谢您的建议。然而,“s5_section_area”只是我的大列表中的 1 个文件的名称。列表中文件的名称如下所示:“a1_section_area, a2_section_area...b1_section_area...” 其中有很多。我希望新数据框有一列列出所有文件名(例如“a1_section_area ...”),下一列列出面积测量值(由原始文件提供)。基本上我测量了某物的面积,每个测量值都保存在它自己的 cvs 文件中。现在我想将所有这些合并到一个大文档中。谢谢
-
请考虑提供一个小的可重现示例和预期输出
-
感谢您的评论。有没有办法将文件附加到这个线程?
-
.id使用您应用的任何名称创建一个列,并将值作为list的名称