这个问题与此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
实际数据帧非常大,其中行包含不同数量的空值。
答案 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仍然值得更多积分