如何使用双标头处理excel文件

时间:2018-01-14 08:56:44

标签: r excel dataframe reshape

我在.xlsx文件中有数据,这些文件的标题结构分布在两行:

rowid   CATA      CATB    CATC
        A1 A2 A3  B1 B2 B3  C1 C2 
1       1  1  2   2  3  5   5  6 
...

此外,第一个标题中的列数(CATA CATB等)可以跨文件更改,也可以更改第二个标题colA1 ... colC2中的列数。

在excel中,第一个标题用合并的单元格表示,分隔第二个标题中的列范围。

我有大约一百个文件,所以我希望有一个算法(没有手动工作)来获取数据结构:

Rowid Cat  Col val 
1     CATA A1  1 
1     CATA A2  1 
1     CATA A3  2
1     CATB B1  2 
1     CATB B2  3 
1     CATB B3  5 
1     CATC C1  5 
1     CATC C2  6

在R中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

这是一个可能的解决方案。我们读取了没有标题的xlsx文件,使用na.locf中的zoo填充了第一行中的缺失值,并创建了一个新的标题,它存在前两行的组合,即{{1我们然后使用CATA---A1将此数据帧重新整形为长格式,并使用单独的方式将我们的自定义标头拆分回CATA---A2和{ {1}}。

我希望这有帮助!

CATB---B1

enter image description here

melt

输出:

Cat