- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何简洁地导入选定的工作表,最好使用 readxl ,来自 .xlsx 工作簿?
使用下面的代码(方法 # 1),我可以在单个 .xlsx 工作簿中导入所有工作表,但是我如何filter()
或 select()
?第二位代码,带有 map_dfr()
,第 2 种方法更简洁,但使用该方法 sheet
vector 失去了它的名字,变成了 1, 2, ctc。
假设我只想导入工作表 iris
和 mtcars
sh_to_impt <- c('iris', 'mtcars')
需要的包裹,
library(readxl)
library(tidyverse)
library(purrr)
代码方法#1,
path <- readxl_example("datasets.xlsx")
datasets_data <- readxl::excel_sheets(path = path) %>%
purrr::set_names() %>% select(mtcars) %>%
purrr::map_dfr(
~ readxl::read_excel(path = path, sheet = .x)
, .id = "sheet"
)
datasets_data
# A tibble: 1,253 x 24
sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 iris 5.1 3.5 1.4 0.2 setosa
2 iris 4.9 3 1.4 0.2 setosa
3 iris 4.7 3.2 1.3 0.2 setosa
4 iris 4.6 3.1 1.5 0.2 setosa
5 iris 5 3.6 1.4 0.2 setosa
6 iris 5.4 3.9 1.7 0.4 setosa
7 iris 4.6 3.4 1.4 0.3 setosa
8 iris 5 3.4 1.5 0.2 setosa
9 iris 4.4 2.9 1.4 0.2 setosa
10 iris 4.9 3.1 1.5 0.1 setosa
# ... with 1,243 more rows, and 18 more variables: mpg <dbl>,
# cyl <dbl>, disp <dbl>, hp <dbl>, drat <dbl>, wt <dbl>,
# qsec <dbl>, vs <dbl>, am <dbl>, gear <dbl>, carb <dbl>,
# weight <dbl>, feed <chr>, lat <dbl>, long <dbl>, depth <dbl>,
# mag <dbl>, stations <dbl>
我可以像这样绕过它,但是
sheet
vector 失去了它的名字,变成了 1, 2, ctc。
map_dfr(sh_to_impt, ~ read_excel(path, sheet = .x), .id = "sheet")
# A tibble: 182 x 17
sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 1 5.1 3.5 1.4 0.2 setosa
2 1 4.9 3 1.4 0.2 setosa
3 1 4.7 3.2 1.3 0.2 setosa
4 1 4.6 3.1 1.5 0.2 setosa
5 1 5 3.6 1.4 0.2 setosa
6 1 5.4 3.9 1.7 0.4 setosa
7 1 4.6 3.4 1.4 0.3 setosa
8 1 5 3.4 1.5 0.2 setosa
9 1 4.4 2.9 1.4 0.2 setosa
10 1 4.9 3.1 1.5 0.1 setosa
# ... with 172 more rows, and 11 more variables: mpg <dbl>,
# cyl <dbl>, disp <dbl>, hp <dbl>, drat <dbl>, wt <dbl>,
# qsec <dbl>, vs <dbl>, am <dbl>, gear <dbl>, carb <dbl>
我看过
this answer ,认为它可能是关键。
map_dfr(sh_to_impt, ~ read_excel(path, sheet = .x), .id = "sheet") %>%
mutate(sheet = recode(sheet, `1` = sh_to_impt[1], `2` = sh_to_impt[2]))
# A tibble: 182 x 17
sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species mpg
<chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
1 iris 5.1 3.5 1.4 0.2 setosa NA
2 iris 4.9 3 1.4 0.2 setosa NA
3 iris 4.7 3.2 1.3 0.2 setosa NA
4 iris 4.6 3.1 1.5 0.2 setosa NA
5 iris 5 3.6 1.4 0.2 setosa NA
6 iris 5.4 3.9 1.7 0.4 setosa NA
7 iris 4.6 3.4 1.4 0.3 setosa NA
8 iris 5 3.4 1.5 0.2 setosa NA
9 iris 4.4 2.9 1.4 0.2 setosa NA
10 iris 4.9 3.1 1.5 0.1 setosa NA
# ... with 172 more rows, and 10 more variables: cyl <dbl>, disp <dbl>,
# hp <dbl>, drat <dbl>, wt <dbl>, qsec <dbl>, vs <dbl>, am <dbl>,
# gear <dbl>, carb <dbl>
最佳答案
在 R 中表示 Excel 工作簿的“整洁”方式是作为嵌套数据框,例如:
# A tibble: 2 x 2
sheet data
<chr> <list>
1 iris <tibble [150 × 5]>
2 mtcars <tibble [32 × 11]>
因此,我将通过将工作表名称存储在列中,将数据作为附加列读取,然后取消嵌套来简化您的第一种方法:
library("readxl")
library("dplyr")
library("purrr")
library("tidyr")
path <- readxl_example("datasets.xlsx")
sh_to_impt <- c("iris", "mtcars")
tibble(sheet = sh_to_impt) %>%
mutate(data = map(sheet, ~read_xlsx(path, .))) %>%
unnest(data)
#> # A tibble: 182 x 17
#> sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species mpg cyl
#> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
#> 1 iris 5.1 3.5 1.4 0.2 setosa NA NA
#> 2 iris 4.9 3 1.4 0.2 setosa NA NA
#> 3 iris 4.7 3.2 1.3 0.2 setosa NA NA
#> 4 iris 4.6 3.1 1.5 0.2 setosa NA NA
#> 5 iris 5 3.6 1.4 0.2 setosa NA NA
#> 6 iris 5.4 3.9 1.7 0.4 setosa NA NA
#> 7 iris 4.6 3.4 1.4 0.3 setosa NA NA
#> 8 iris 5 3.4 1.5 0.2 setosa NA NA
#> 9 iris 4.4 2.9 1.4 0.2 setosa NA NA
#> 10 iris 4.9 3.1 1.5 0.1 setosa NA NA
#> # … with 172 more rows, and 9 more variables: disp <dbl>, hp <dbl>, drat <dbl>,
#> # wt <dbl>, qsec <dbl>, vs <dbl>, am <dbl>, gear <dbl>, carb <dbl>
如果您事先不知道您想要的工作表,或者想要为不同的分析使用不同的子集,您也可以导入所有这些并在取消嵌套之前进行过滤:
tibble(sheet = excel_sheets(path)) %>%
mutate(data = map(sheet, ~read_xlsx(path, .))) %>%
filter(sheet %in% sh_to_impt) %>%
unnest(data)
#> # A tibble: 182 x 17
#> sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species mpg cyl
#> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
#> 1 iris 5.1 3.5 1.4 0.2 setosa NA NA
#> 2 iris 4.9 3 1.4 0.2 setosa NA NA
#> 3 iris 4.7 3.2 1.3 0.2 setosa NA NA
#> 4 iris 4.6 3.1 1.5 0.2 setosa NA NA
#> 5 iris 5 3.6 1.4 0.2 setosa NA NA
#> 6 iris 5.4 3.9 1.7 0.4 setosa NA NA
#> 7 iris 4.6 3.4 1.4 0.3 setosa NA NA
#> 8 iris 5 3.4 1.5 0.2 setosa NA NA
#> 9 iris 4.4 2.9 1.4 0.2 setosa NA NA
#> 10 iris 4.9 3.1 1.5 0.1 setosa NA NA
#> # … with 172 more rows, and 9 more variables: disp <dbl>, hp <dbl>, drat <dbl>,
#> # wt <dbl>, qsec <dbl>, vs <dbl>, am <dbl>, gear <dbl>, carb <dbl>
关于readxl,单个 .xlsx 工作簿中的选定工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66063453/
我最近一直在学习 Clojure。 Clojure 世界中是否有类似 Scala 的工作表这样的东西,我可以在其中放入任何代码并在保存后立即对其进行评估?或者也许 Clojure 有类似的解决方案?
有人可以帮我吗?我想知道如何过滤工作表中的多个选项卡(C1-C19)。这是我所做的: 我创建了一张表格,将所有回复存储在我的谷歌表单(事件注册表单)中。每个参与者将收到一个坦克编号,每个坦克编号根据其
这就是我将打开的面板显示为 float 窗口的方式。 有人可以帮我将面板作为工作表运行吗?窗口对象是mWindow。我使用的许多标准代码都已被折旧。 NSOpenPanel *openPanel =
当您仅键入 worksheets() 时,默认范围 ActiveWorkbook 或 ThisWorkbook 是什么?对于那些不了解这些区别的人来说,它们非常重要,尤其是在 Excel 2013 中
我有一个带有一些图表的 HTML 页面。我想要做的是编写一个加载 javascript 函数,它将从 excel 表中读取值,将它们存储在变量中并在 html 页面上使用它们。我的问题是是否有任何 j
我需要将参数 callFrom 传递给 SwiftUI 中的工作表。 奇怪的是,该参数在第一次调用时没有使用,但对以下调用有效。 import SwiftUI struct ContentView:
我试着 var tempSheet = wrksheets[sheetName] as Worksheet; 在哪里 wrksheets是类型表 sheetName 是“带空格的工作表名称” 如果
该函数用作“ Assets 类别分配”引擎(在参数范围内具有约束)并在数组的每一行上模拟投资组合模型。我尝试使用四种方法将数组发布到工作表上,但每种方法都失败了。 对于 Assets A、B、C、D
目前,我的 excel 文件有两张表,一张名为“English”,一张名为“French”。 我以编程方式打开我的工作簿并编辑我的英文表,没有任何问题。当我打开第二张工作表时,出现以下错误: The
我添加了一个 VBA 表单 userform和一个模块 Module1在 Excel 中打开 Microsoft VBA 编辑器 (Alt+F11)。 现在,每当我打开任何其他 Excel 时,按 A
在单个 Excel 工作簿中,我想选择各种工作表来运行 VBA 子例程。我找到了显示如何遍历选定工作表的代码,它使用“MsgBox sh.Name”;但是,当我将代码放入其中时,它只会影响选择的最后一
我想知道是否有一个函数可以在 Excel 中加载特定于 Python 的工作表,例如,如果我有 34 张工作表只加载前 25 张工作表。通过以下行,我加载了所有工作表。 xlsx=pd.ExcelFi
我有一个名为“A”、“B”、“C”等的工作表的 xlsx。我需要形成一个名称为“A”、“B”、“C”的表作为第一列,以及来自的一些数据每个工作表中与第二列相同的单元格。例如,这可能看起来像: S
我有一张用密码保护的工作表。当我使用 VBA 更改该表上的任何内容时,我会像这样取消保护: Private Sub Worksheet_Change(ByVal target As Range)
我想将 Excel 文档插入 Excel 工作表。我可以通过以下步骤手动执行此操作; 插入/文本/对象/从文件创建(勾选显示为图标)/浏览。 然后我选择文件并插入文档。 我想通过宏来做到这一点。 (录
是否可以创建 批处理文件那将执行以下操作? 重命名 Excel 文件中的单个工作表(不是 Excel 工作簿/文件本身) 将简单格式应用于 Excel 文件 - 例如,将字体和字体大小应用于整个工作簿
Private Sub CommandButton1_Click() Dim ws As Worksheet With Application.FileDialog(msoFileDialog
我想知道是否可以在不复制该工作表的情况下引用另一本工作簿中的 Excel 工作表? 情况:我有一些非常大的工作表,其中充满了各种数据,但我不想在我的工作簿中保留它们的副本,因为虽然每个工作簿都使用相同
我有这个 Python 字典,我想将这个数据写入 Excel 文件。 注意:有很多类别,每个类别有很多汽车(为简单起见,我使用了 2 个类别) data = {"Category": {"Diesel
我有一个 excel 工作簿,在工作簿中我有 2 张名为 Front Page 和 Drafting 的工作表。起草工作表引用了首页工作表中的一些值。这只是一个基本的引用 我有像这样的公式:='Fro
我是一名优秀的程序员,十分优秀!