Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除包含全局环境中多个大型数据帧的特定NA列的行_R_Excel_Dataframe - Fatal编程技术网

R 删除包含全局环境中多个大型数据帧的特定NA列的行

R 删除包含全局环境中多个大型数据帧的特定NA列的行,r,excel,dataframe,R,Excel,Dataframe,我有大量的CVS文件需要通过删除特定列中具有n/a的所有行来进行整理。因此,与其在Excel中手动打开每一个,我想知道是否有可能编写一些R代码: 将文件夹中的所有CSV文件加载到R 分别删除每个数据文件的特定列(“错误”)中包含n/a的所有行 将所有剩余n/a更改为“” 将整理后的数据保存为单个Excel文件(保留原始名称,并在末尾加上一点,以便我可以区分原始文件和处理后的文件) 我能够对单个文件执行上述步骤,但我没有太多的运气扩展代码,以便对多个CSV文件执行相同的操作 如果我一次处理一个文件

我有大量的CVS文件需要通过删除特定列中具有n/a的所有行来进行整理。因此,与其在Excel中手动打开每一个,我想知道是否有可能编写一些R代码:

  • 将文件夹中的所有CSV文件加载到R
  • 分别删除每个数据文件的特定列(“错误”)中包含n/a的所有行
  • 将所有剩余n/a更改为“”
  • 将整理后的数据保存为单个Excel文件(保留原始名称,并在末尾加上一点,以便我可以区分原始文件和处理后的文件)
  • 我能够对单个文件执行上述步骤,但我没有太多的运气扩展代码,以便对多个CSV文件执行相同的操作

    如果我一次处理一个文件,这就是我当前拥有的:

    setwd('#folderlocation')
    df <- read.csv("#filename",
               header=TRUE)
    working <- df[!is.na(df$Error),]
    working <- sapply(working, as.character)
    working[is.na(working)] <- ""
    library(xlsx)
    write.xlsx(working,"test.xlsx")
    
    但我被困在如何从那里开始

    我追求的最终结果是,一旦使用代码处理每个文件,在“错误”列中将不会有任何空行,并将保存为Excel文件。 在任何情况下,我都不想合并数据帧,因为试图解开哪些数据属于哪个文件会变得太混乱


    感谢大家的帮助:-)

    您的Rscript myscript.R:

    library(xlsx)
    args = commandArgs(trailingOnly=TRUE)
    df <- read.csv(args[1], header=TRUE)
    working <- df[!is.na(df$Error),]
    working <- sapply(working, as.character)
    working[is.na(working)] <- ""
    write.xlsx(working,paste(args[1], "test.xlsx", sep="_")
    

    您的Rscript myscript.R:

    library(xlsx)
    args = commandArgs(trailingOnly=TRUE)
    df <- read.csv(args[1], header=TRUE)
    working <- df[!is.na(df$Error),]
    working <- sapply(working, as.character)
    working[is.na(working)] <- ""
    write.xlsx(working,paste(args[1], "test.xlsx", sep="_")
    

    也许可以从命令行在for循环中调用R脚本?这可以通过
    Rscript yourscriptname.R input_file.csv
    完成。然后,您只需要在R脚本中添加以下两行:
    args=commandArgs(trailingOnly=TRUE)
    并从命令行args获取文件名:
    df也许您可以从命令行在for循环中调用R脚本?这可以通过
    Rscript yourscriptname.R input_file.csv
    完成。然后,只需将以下两行添加到R脚本:
    args=commandArgs(trailingOnly=TRUE)
    并从命令行args获取文件名:
    df
    
    bash
    cd /folder/with/input/data
    for FILE in *.CSV
     do
      Rscript myscript.R $FILE
     done