干净的文本文件-删除LOOP(R / python)中不需要的内容

时间:2018-06-20 14:41:52

标签: python r loops data-cleaning

enter image description here我想清除非结构化文本文件中的所有“垃圾”(使文件不适合分析)。

在这种特定情况下,仅保留所需信息的一种方法是仅保留大于250的所有数字(文本是字符串,数字,...的组合)

对于大量文本文件,我想在R中执行以下操作:

x <- x[which(x >= "250"),]

当我尝试在一个循环中执行相同操作时,一个文本文件的代码运行完美(上述)(对于N个较大的文本文件,它会失败(错误:错误的维数o))。

for(i in 1:length(files)){
  i<- i[which(i >= "250"),]
}

有人知道如何在R(或python)中解决这个问题吗?

图片:非常简单的文本文件示例,我想保留(START)和(END)之间的所有内容

1 个答案:

答案 0 :(得分:0)

如果它是10 K文件,这没有任何意义,为什么还要尝试用R或python做呢?为什么不只是一个简单的awk或bash命令?此外,您的图片正在解析文本文件中的START和END之间的信息,不确定是不是跨栏的数据框(尝试放入简单的dput而不是图片。)
您要做的就是在10k个文件的开始和结束之间使用grep。我会那样做。 bash这样的东西应该可以工作。

for i in *.txt
do 
 sed -n '/START/,/END/{//!p}' i > i.edited.txt
done

如果列是R中的标准列,则可以执行以下操作(但是,我不会在R内存中读取10 K文件)。 将文件作为数据帧列表读取,然后简单地执行

a = data.frame(col1 = c(100,250,300))
b = data.frame(col1 = c(250,450,100,346))
c = data.frame(col1 = c(250,123,122,340))

df_list <- list(a = a ,b = b,c = c)
lapply(df_list, subset, col1 >= 250)