清理xlsx文件

时间:2019-03-13 00:59:23

标签: r xlsx

我正在尝试处理 xlsx 工作表中凌乱的大型数据集。这些表的结构使得列标题是三行的组合。

我正在使用 RStudio 并尝试编写一个函数,该函数将空单元格填充并使用以前填充的单元格中的属性填充它们,最后将所有填充的行连接到带有连字符的最后一个列标题中:例如在三个不同行上的就业人数男性应变为Employment_Number_Male

有什么建议吗?

请参阅我正在使用的示例 xlsx 表。

Sample xlsx table structure

1 个答案:

答案 0 :(得分:0)

获取此data.frame:

    df <- data.frame(..1 = c("year", NA, NA),
             ..2 = c(NA, "males", "all"),
             ..3 = c(NA, NA, "half"),
             ..4 = c(NA, NA, "some"),
             ..5 = c(NA, "females", "all"),
             ..6 = c(NA, NA, "half"),
             ..7 = c(NA, NA, "some"))

这里是将空单元格转换为NA的尝试。

    # convert empty cells to NA
    empty_as_na <- function(x){
    if("factor" %in% class(x)) x <- as.character(x) ## since ifelse wont work   with factors
    ifelse(as.character(x)!="", x, NA)}

   # transform all columns
   df %>% mutate_each(funs(empty_as_na)) 

    # apply function
    na.rows <- which( apply(df, 1, function(z) (all(is.na(z)) ) ) )
    df[na.rows , ] <- df[na.rows-1, ]

问题正在使用它旁边的单元格的值填充。.

a reprex render