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