r-通过删除空白来合并数据框中的行

时间:2018-06-27 09:30:40

标签: r dataframe data-cleaning

这个问题与此here类似,但不相同。我有一个来自OCR的旧文档的非常大且混乱的数据帧。它充满了空值,需要折叠才能形成合并的行。请看以下示例:

DF <- data.frame(
  Col1 = c("Egg", "", ""),
  Col2 = c("", "Flour", ""),
  Col3 = c("", "", "Bread"),
  Col4 = c("4", "", ""),
  Col5 = c("", "6", "8")
)

> DF
  Col1  Col2  Col3 Col4 Col5
1  Egg                4     
2      Flour               6
3            Bread         8

如何删除数据框的空值以形成合并的行?所需的输出如下所示:

> DF
  Col1    Col2
1  Egg    4     
2  Flour  6
3  Bread  8

实际数据帧非常大,其中行包含不同数量的空值。

2 个答案:

答案 0 :(得分:2)

这是coalesce()dplyr的一个选项:

library(dplyr)
DF[DF==""] <- NA # replace empty strings by NA
data.frame(Col1 = coalesce(!!! DF), Col2 = coalesce(!!! rev(DF)))
#   Col1 Col2
#1   Egg    4
#2 Flour    6
#3 Bread    8

答案 1 :(得分:0)

但是,另一种实现相同目标的方法

library(dplyr)

df<-do.call("paste", DF)%>%as.data.frame()

df<- df%>%
  transmute(x1= df[[1]]%>%str_extract("[A-z]+"),
            x2 = df[[1]]%>%str_extract("\\d+"))
df

#     x1 x2
#1   Egg  4
#2 Flour  6
#3 Bread  8

@mtoto仍然值得更多积分