使用因子变量从不同的 excel 工作表创建数据框

Create dataframe from different excel sheets with factor variable

抱歉,如果这是一个非常基本的问题,但我无法找到问题的答案。

我使用 readxl 库从具有 3 sheet 的 excel 文件导入了我的数据。所以我的工作区中有 3 个数据集,我想将它们放在一起(我已经使用 rbind 函数完成了)。

但是我需要创建一个具有 3 个级别的新变量因子(每个级别 sheet),以便在创建的新数据框中区分它们。我该怎么做?

提前致谢!

这是一个如何做的例子:

# the dataframes
df1 <- mtcars[1:3,1:2]
df2 <- mtcars[5:10,1:2]

# get all dataframes in your environment in a list
df_list <- Filter(function(x) is(x, "data.frame"), mget(ls()))

# add an id column to each dataframe in the list
df_list <- Map(cbind, df_list, unique.id = (1:length(df_list)))

# bind all dataframes to one with the unique id
do.call(rbind, df_list)
                       mpg cyl unique.id
df1.Mazda RX4         21.0   6         1
df1.Mazda RX4 Wag     21.0   6         1
df1.Datsun 710        22.8   4         1
df2.Hornet Sportabout 18.7   8         2
df2.Valiant           18.1   6         2
df2.Duster 360        14.3   8         2
df2.Merc 240D         24.4   4         2
df2.Merc 230          22.8   4         2
df2.Merc 280          19.2   6         2

在绑定它们之前,在每个基于 sheet 的数据框中创建一个变量。

sheet1$sheet –> "S1"
sheet2$sheet -> "S2"
sheet3$sheet -> "S3"

在那里你将有一个名为 sheet 的变量和一个包含 S1、S2、S3 的列。

您可以使用 dplyr::bind_rows 指定 .id 选项并可能对输入数据帧使用命名参数(参见文档)