如何删除多个单词和空行?我正在使用readLines将大文本文件导入到R中。它由10,000多页组成。最终我试图创建一个数据框。
每个页面都有以下两行,我想在ONE STEP中删除空行。
Set reorder point
Plan category: P
下面是一个名为MM的示例文本文件:
设置再订货点 计划类别:P
Plnt SLoc Material Description L.T MRP Stat Auto MatSG PC PN Freq Qty CFreq CQty Cur.RPt New.RPt CurRepl NewRepl Updt Cost ServStock Unit OpenMatResb DFStorLocLevel
0231 0002 GB.C152260-00001 ASSY PISTON & SEAL/O-RING 44 PD X A A A 18 136 30 29 50 43 24.88 51.000 EA
0231 0002 WH.112734 MOTOR REDUCER, THREE-PHAS 41 PD X B B A 16 17 3 3 5 4 483.87 1.000 EA X
Set reorder point
Plan category: P
Plnt SLoc Material Description L.T MRP Stat Auto MatSG PC PN Freq Qty CFreq CQty Cur.RPt New.RPt CurRepl NewRepl Updt Cost ServStock Unit OpenMatResb DFStorLocLevel
0231 0002 WH.920569 SPINDLE MOTOR MINI O 22 PD X A A A 69 85 15 9 25 13 680.91 21.000 EA
0231 0002 GB.C150583-00001 VALVE-AIR MDI 64 PD X A A A 16 113 50 35 80 52 19.96 116.000 EA
Set reorder point
Plan category: P
Plnt SLoc Material Description L.T MRP Stat Auto MatSG PC PN Freq Qty CFreq CQty Cur.RPt New.RPt CurRepl NewRepl Updt Cost ServStock Unit OpenMatResb DFStorLocLevel
0231 0002 FG.124-0140 BEARING 32 PD X A A A 36 205 35 32 50 48 21.16 55.000 EA
0231 0002 WP.254997 BEARING,BALL .9843 X 2.04 52 PD X A A A 18 155 50 39 100 58 2.69 181.000 EA
Set reorder point
Plan category: P
我在两个步骤中尝试了以下代码,但它删除了一个或另一个并且没有删除该行:
gsub("Set reorder point", "", MM)
gsub("Plan category: P", "", MM)
此删除需要在R内完成。非常感谢提前。
答案 0 :(得分:2)
正如Ironholds建议的那样,gsub是要走的路,你可以试试:
df<-readLines("MM.txt")
df.clean<-gsub("^Set.*$|^Plan.*$","",df)
这将替换以“Set”开头的第1行,以“Plan”开头,用“”,空行
现在只剩下空行,可以用
删除 df.clean<-df.clean[df.clean!=""]
此处,^
和$
表示行匹配索引器的开头和结尾。
答案 1 :(得分:1)
您可能需要查看“gsub
”,并使用它来查找行,然后将其替换为(gsub(x = object, pattern = "thing_you_want_to_replace", replacement = "")
。或者,不是使用R,而是先通过“awk
”脚本运行它 - 比如
awk {gsub("(Set reorder point|Plan category: P", "");
print >> "the_output_file.txt"} the_input_file.txt
然后来自readLines()
the_output_file.txt
这可以避免任何可能的尴尬,试图消毒已经处理过的东西。
答案 2 :(得分:1)
df <- readLines("MM.txt")
dfClean <- grep("^Set.*$|^Plan.*$|^$", df, value = TRUE, invert = TRUE); dfClean
以下是使用的正则表达式的解释:
^ Set。 $:替换以&#39; Set&#39;开头的行。 (使用元字符^)到行的末尾(。 $) | :元字符将多个表达式组合成单个表达式 计划。 $:替换以&#39;计划&#39;开头的行。 (使用元字符^)到行的末尾(。 $) ^ $:删除空行