gpt4 book ai didi

在 R 中读取带有两行标题的 excel

转载 作者:行者123 更新时间:2023-12-04 21:56:38 24 4
gpt4 key购买 nike

我有一个结构简单的 excel 文件,如下图所示。

Excel structure

        A                       B       
a b c a b c
0.42 0.42 0.42 0.42 0.42 0.42
0.42 0.42 0.42 0.42 0.42 0.42

我怎样才能到达 R 中的 data.frame ,如下所示?

col_name    a       b       c
A 0.42 0.42 0.42
A 0.42 0.42 0.42
B 0.42 0.42 0.42
B 0.42 0.42 0.42

一个重要的补充。样本结构 - 只是整个表格的一部分。
整个excel看起来像:
Whole document

最佳答案

只要 Excel 文件很小,我就会这样处理。

library(readxl)
library(zoo)
library(tidyr)
library(dplyr)
library(reshape2)

cols <- read_excel("path_to_file.xlsx",
col_names = FALSE)[1:2, ]

cols[1, ] <- na.locf(as.character(cols[1, ]),
na.rm = FALSE)

cols <- vapply(X = cols,
FUN = function(x) if (is.na(x[1])) x[2] else paste0(x, collapse = "_"),
FUN.VALUE = character(1))

DFrame <- read_excel("path_to_file.xlsx",
col_names = FALSE,
skip = 2) %>%
setNames(cols) %>%
mutate(row_id = row_number())

DFrame

DFrame %>%
select(row_id, A_a:B_c) %>%
gather(column, value, A_a:B_c) %>%
mutate(AB_group = sub("(^[A-B])_.+$", "\\1", column),
column = sub("^[A-B]_", "", column)) %>%
dcast(row_id + AB_group ~ column,
value.var = "value")

不利的一面是,由于 read_excel没有 nrows参数,此代码实际上两次读取文件。还有其他可以读取excel文件的包,如 gdata::read.xls这将让您只阅读前两行以获取列名。我认为那个包有更多的开销。

无论如何,当我遇到这种情况时,我要么单独导入列名并在将它们分配给数据之前将它们操作为我想要的,或者我根本不读取名称并使用手动重置所有变量名称 setNames .

关于在 R 中读取带有两行标题的 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com