规范化和清理R中的excel文件

我需要帮助清理R中的excel文件

这些是由不同人制作的excel文件,它们应该包含相同的文本。 我的任务是比较文本的片段,并确保它们匹配(有时候人们的types,有时候人们复制粘贴,这是一团糟)。

我特别的问题是,没有标准的格式,其中一些已经从PDF中提取。

给你一个想法,文字可能是这样的:

文件A:

“猴子必须吃:

·香蕉,或

6个香蕉。

文件B:

“猴子必须吃:

香蕉,或者

5个香蕉“。

文件C:

“猴子必须吃:

·香蕉,或

6个香蕉。

到目前为止,我已经使用了以下function的组合,但是最后我的比较仍然是FALSE

monkeyr$txtcp <- stri_enc_toascii(monkeyr$txtcp) monkeyr$txtcp <- removeNumbers(monkeyr$txtcp) #bad idea as I want to compare the number of bananas monkeyr$txtcp <- tolower(monkeyr$txtcp) monkeyr$txtcp <- stripWhitespace(monkeyr$txtcp) monkeyr$txtcp <- removePunctuation(monkeyr$txtcp) monkeyr$txtcp <- trimws(monkeyr$txtcp) monkeyr$txtcp <- stri_replace_all_charclass(monkeyr$txtcp, "\t", " ", merge = T) #This above was specially because I wanted to remove the "tab" in File 3. #Does not work. This is some sort of "invisible" tab that gets turned into #a series of ->->-> when saved as csv. 

附加信息:

这是FILE C,在excel中被剥离和打开后的样子:

“不可见”选项卡的屏幕截图,变成箭头

有任何build议来正常化文本莫名其妙?

注意事项:没有使用Java的软件包。

提前致谢

编辑

示例input:

 monkeyr <- structure(list(id = c("MON1", "MON2", "MON3"), txtcp = c("The monkey must be fed a combination of:\r\n<U+F0B7> Bananas, or\r\n<U+F0B7> 6 Bananas.", "The monkey must:\r\n· Be active\r\n· Be petted\r\n· Be inactive.", "The monkey must:\r\nbe tame\r\njump")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -3L), .Names = c("id", "txtcp")) 

预期产出:

 cleanmonkey <- structure(list(id = c("MON1", "MON2", "MON3"), txtcp = c("the monkey must be fed a combination of bananas or 6 bananas", "the monkey must be active be petted be inactive", "the monkey must be tame jump" )), .Names = c("id", "txtcp"), class = c("tbl_df", "tbl", "data.frame" ), row.names = c(NA, -3L)) 

没有优雅,但这个怎么样。 代码replace非ASCII元素,然后是“\ r”和“\ n”,最后清理多余的空格。

 monkeyr$clean <- str_replace_all(string = monkeyr$txtcp, pattern = "<U.*>", replacement = "") monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\\r", replacement = "") monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\\n", replacement = "") monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "[[:punct:]]", replacement = "") monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\s{2}", replacement = "") monkeyr$clean [1] "The monkey must be fed a combination of Bananas or 6 Bananas" [2] "The monkey must Be active Be petted Be inactive" [3] "The monkey mustbe tamejump" 

应注意“mustbe”和“tamejump”的组合。