使用跨多个Data.Frame的循环整理数据

使用跨多个Data.Frame的循环整理数据,r,R,我是第一次尝试理解R的初学者,在学习R的过程中遇到了一系列的问题,我很难找到答案 我遇到的问题如下 如何创建循环以过滤掉数据的某些方面 如何从文件夹中导入大量.CSV文件,然后应用循环以清除额外数据并过滤掉数据,包括将变量名设置为其文件名 这基本上是我想要的过滤器,但我需要将其应用于一系列.CSV文件,并将其输出到新的CSV文件 rainfallg1 = read.csv("120015A.csv", stringsAsFactors=FALSE,

我是第一次尝试理解R的初学者,在学习R的过程中遇到了一系列的问题,我很难找到答案

我遇到的问题如下

  • 如何创建循环以过滤掉数据的某些方面
  • 如何从文件夹中导入大量.CSV文件,然后应用循环以清除额外数据并过滤掉数据,包括将变量名设置为其文件名
  • 这基本上是我想要的过滤器,但我需要将其应用于一系列.CSV文件,并将其输出到新的CSV文件

    rainfallg1 = read.csv("120015A.csv",
                stringsAsFactors=FALSE, 
                sep=",",
                rainfall_filter <- rainfallg1[,1:3])
    
    # This section names the columns and numerically codes them making it easy to filter.
    
    names(rainfall_filter)[1] <- "Time_Date"
    names(rainfall_filter)[2] <- "Rainfall"
    names(rainfall_filter)[3] <- "Code_of_Standard"
    
    rainfall_filter$Rainfall <- as.integer(rainfall_filter$Rainfall)
    rainfall_filter$Code_of_Standard <- as.integer(rainfall_filter$Code_of_Standard)
    
    rainfall_filter_1 <- filter(rainfall_filter, Code_of_Standard <= 83) 
    
    
    rainfallg1=read.csv(“120015A.csv”,
    stringsAsFactors=FALSE,
    sep=“,”,
    
    您可以使用
    list.files
    获取所有文件名的列表,并使用
    lappy
    /
    map

    library(dplyr)
    filenames <- list.files(pattern = '\\.csv$', full.names = TRUE)
    
    purrr::map(filenames, ~.x %>% 
                    #Read the data
                    read.csv(stringsAsFactors=FALSE) %>%
                    #Select only first 3 columns
                    select(1:3) %>%
                    #Rename the columns
                    setNames(c('Time_Date', 'Rainfall', 'Code_of_Standard')) %>%
                    #Change `Rainfall` and  `Code_of_Standard` columns to integer
                    mutate(across(Rainfall, Code_of_Standard), as.integer) %>%
                    #keep only rows less than equal to 83 in Code_of_Standard
                    filter(Code_of_Standard <= 83) %>%
                    #Write the csv file.
                    write.csv(paste0(tools::file_path_sans_ext(basename(.x)), 
                              '_new.csv'), row.names = FALSE)
          )
    
    库(dplyr)
    文件名%
    #读取数据
    read.csv(stringsAsFactors=FALSE)%>%
    #仅选择前3列
    选择(1:3)%>%
    #重命名列
    集合名称(c(‘时间’、‘日期’、‘降雨量’、‘标准代码’))%>%
    #将“标准”列的“降雨”和“代码”更改为整数
    变异(跨越(降雨,标准的代码),如.integer)%>%
    #在标准代码_中,仅保留小于等于83的行
    过滤器(标准的代码%
    #写入csv文件。
    write.csv(粘贴0(工具::文件路径无扩展(basename(.x)),
    “_new.csv”),row.names=FALSE)
    )
    

    这将在您的工作目录中写入新文件。如果您的旧文件被称为
    df1.csv
    df2.csv
    这将写入
    df1_new.csv
    df2_new.csv

    这些“120015A.csv”中有多少个文件在那里,它们是否遵守一个明显的命名约定?@anguyen1210有1000多个文件,但是名称发生了变化,但在6个数字值和一个相关的字母值方面保持了相同的形式。不管我怎么问,下面看到的是@Ronak的答案,它使用list.files()和map()轻松解决了这个问题.解决方案很好。。。