我有一個Excel工作簿,其中包含19張工作表,名稱從Sheet1到Sheet19。我想將全部19張紙導入到一個R data.frame中,並將紙張名稱作爲第一列。所以,我最終會是這樣的:將多個Excel工作表合併到單個數據框中,工作表名稱爲第一列,R
結構的Excel移交我想爲數據幀
謝謝。
我有一個Excel工作簿,其中包含19張工作表,名稱從Sheet1到Sheet19。我想將全部19張紙導入到一個R data.frame中,並將紙張名稱作爲第一列。所以,我最終會是這樣的:將多個Excel工作表合併到單個數據框中,工作表名稱爲第一列,R
結構的Excel移交我想爲數據幀
謝謝。
,如果你使用的data.table
代替data.frame
會更容易些。因此,假設你xlsx
文件名爲這應該工作
df <- data.table()
for (i in 1:19)
{
sheet <- paste0("Sheet",i)
temp.df <- as.data.table(read.xlsx(file = "Book1.xlsx",sheetIndex = sheet))
temp.df[,sheetname:=i]
enter code here
df <- rbind(df,temp.df)
}
請記住,在每一個表中的列名必須是相同的。
您可以使用readxl
象下面這樣: 我有一個Excel表「Book1.xlsx」與整個工作簿中的所有三片類似的格式。我在三張表中列a,b和c。您不必指定名稱,「工作表」對象將帶有您的工作表名稱。另外,請注意,使用lapply將遍歷你的牀單和以後,我們可以追加它得到最終的數據幀
我的假設:您的所有工作表的結構性質相似。
library(readxl)
library(tidyverse)
setwd("C:\\Users\\pradeep4.kumar\\Desktop") ###set your working directory where your data resides
sheet = excel_sheets("Book1.xlsx")
df = lapply(setNames(sheet, sheet), function(x) read_excel("Book1.xlsx", sheet=x))
df = bind_rows(df, .id="Sheet")
樣本的輸出的:
> data.frame(df)
Sheet a b c
1 Sheet3 17 59 82
2 Sheet3 17 26 84
3 Sheet3 92 33 17
4 Sheet3 12 60 16
33 Sheet2 50 27 42
34 Sheet2 47 75 49
35 Sheet2 94 44 20
36 Sheet2 79 23 55
37 Sheet2 35 35 5
38 Sheet2 30 74 29
39 Sheet1 2 95 81
40 Sheet1 89 65 30
這看起來已經奏效,謝謝。 – user6077819
沒問題。你可以將你的問題標記爲回答:) – quant