我是R编程的新手。我必须将excel矩阵插入R并将其转换为普通表。 我刚开始遇到一个问题:/ excel / csv矩阵导入的确存在很多可能性,但我不知道如何让它读取更多的行名。
以下是示例:
| Year a1 a2 a3
Colname1 | ColName2 b1 b2 b3
c1 d1 x x x
c2 d2 x x x
c3 d3 x x x
a1,a2,a3是年份列表 b1,b2,b3是城市列表 - 此行没有名称,但应该
最后我需要做一个简单的表
Colname1,Colname1,Year,City,Data
答案 0 :(得分:2)
假设您正在处理类似于以下Excel表格的数据:
您可以按以下方式导入文件:
require(readxl)
xlImp <- read_excel(path = "file.xlsx", sheet = 1,
col_names = FALSE, na = " ")
获得的对象易于操作:
> head(xlImp)
X0 X1 X2 X3 X4
1 <NA> Year a1 a2 a3
2 Colname1 Colname2 b1 b2 b3
3 c1 d1 1 4 7
4 c2 d2 2 5 8
5 c3 d3 3 6 9
然后,您可以使用导入的数据进行一些基本操作,例如设置列名:
# Simple cleaning
Vectorize(require)(package = c("tidyr", "dplyr", "magrittr"),
char = TRUE)
# Set column names
xlImp %<>%
setNames(gsub(".", "", make.names(paste(.[1,], .[2,])), fixed = TRUE)) %>%
## Clean row redundant rows
filter(row_number() %in% 3:dim(xlImp)[2])
这些简单的转换将生成(或多或少)整洁的数据框,您应该可以轻松地重塑和操作:
> head(xlImp)
Source: local data frame [3 x 5]
NAColname1 YearColname2 a1b1 a2b2 a3b3
(chr) (chr) (chr) (chr) (chr)
1 c1 d1 1 4 7
2 c2 d2 2 5 8
3 c3 d3 3 6 9
答案 1 :(得分:1)
根据我的一般经验,最简单的方法是在将数据集导入到R之前将其准备好,特别是当您刚开始使用R时。因此,取决于矩阵的大小(有多少列?) ,我会考虑调整excel中的列名,即列名只使用一行,例如
Colname1 | ColName2 | b1, a1 | b2, a2 | b3, a3
c1 d1 x x x
c2 d2 x x x
c3 d3 x x x
可以在此处找到有关R导入数据的精彩教程:https://www.datacamp.com/community/tutorials/r-tutorial-read-excel-into-r。