У меня есть несколько файлов .csv в одном и том же формате перекачки томов каждую минуту. Мне нужно собрать суммарные объемы закачки за каждый день. Некоторые из данных имеют текстовые ошибки (регистратор данных отключен) или отрицательные значения (означает, что поток был равен 0). Я написал код ниже, чтобы сделать это. Как я могу сделать это для нескольких файлов вместо копирования и вставки для каждого месяца? Все файлы имеют пометку «Mon_Year_Well_Flows.csv». Я попытался использовать цикл for и использовать lapply безуспешно. Кроме того, я очень плохо знаком с R, поэтому я понимаю, что мой код, вероятно, очень неэффективен.
Первые строки файла данных первого месяца "Jul_2017_Well_Flows.csv"
Date DW_20 DW_24A DW_25A DW_26A DW_27A DW_28 DW_29
9/1/18 0:00 995.88 1110.62 1229.14 -0.09 4.5 1100.95 913.33
9/1/18 0:01 1002.43 1115.85 1231.59 -0.09 4.5 1107.63 909.06
9/1/18 0:02 1007.01 1123.39 1236.75 -0.09 4.51 1108.37 935
9/1/18 0:03 1007.17 1121.69 1234.58 -0.09 4.52 1105.64 901.35
9/1/18 0:04 1005.27 1122.86 1233.25 -0.09 4.53 1107.56 911.15
9/1/18 0:05 1001.37 1116.39 1229.89 -0.09 4.54 1103.66 937.93
Код для файла данных первого месяца
#Load data
data <- read.csv("Jul_2017_Well_Flows.csv", header = T)
#Create new data frame with date info
data1 <- data.frame("Date" = data$Date)
#Remove all error text to NA
index <- supply(data, is.factor)
data[index] <- apply(data[index], function(x) as.numeric(as.character(x)))
#Convert all NA values to 0
data[is.na(data)] <- 0
#Converting all negative pumping rates to 0
data[,-c(1)][data[,-c(1)]<0] <-0
#Add back original date column
data <- select(data, -Date)
data <- bind_cols(data,data1)
#Remove minute data and change day to date formatting
data$Day <- as.Date(data$Date, '%m/%d/%Y')
Jul_2017 <- data %>%
#Remove date column
select(-Date) %>%
#Group all data according to day
group_by(day) %>%
#Sum all daily well data by day
summarize_all(sum)
В конце копирования и вставки вышеуказанного кода для каждого месяца я делаю следующее, чтобы связать все выходные файлы вместе -
combined <- bind_rows(Jul_2017, Aug_2017....)