Объединить отфильтрованные данные из каждого файла в новый фрейм данных - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу отфильтровать определенную строку данных из нескольких файлов и объединить ее в один фрейм данных, поэтому фрейм данных должен увеличиваться при каждом чтении нового файла.Мой код здесь может перебрать все файлы, но только создать фрейм данных последнего файла.Могу ли я получить желаемый фрейм данных без необходимости сначала объединять все необработанные данные из каждого файла ?.Просьба совета.

library(dplyr)
library(ggplot2)
library(tidyverse)
y = 1978
N <- 10
for (i in 1:N) {
  yr = y +(as.numeric(i))
  yr = as.character(yr)
  p <- paste0("c:/Users/Hp/Documents/",yr,".csv")

  #read.csv
  dat <- read.csv(p,header = TRUE, stringsAsFactors = F)
  #filter
  dat_sub <- filter(dat, hght_m > 0)
  dat_sub <- filter(dat_sub, temp_c > 0)
  dat1_sub <- filter(dat_sub, pres_hpa == 1000)
  dat2_sub <- filter(dat_sub, pres_hpa == 925)
  dat3_sub <- filter(dat_sub, pres_hpa == 850)
  dat4_sub <- filter(dat_sub, pres_hpa == 700)
}
all.temp <- rbind(dat1_sub,dat2_sub, dat3_sub,dat4_sub)
ggplot(data = all.temp, aes(x= as.Date(date), y = temp_c, group = pres_hpa, color = pres_hpa)) + geom_line()

1 Ответ

0 голосов
/ 23 ноября 2018

Вам просто нужно поместить rbind внутри цикла, например:

library(dplyr)
library(ggplot2)
library(tidyverse)

y = 1978
N <- 10
all.temp <- NULL

for (i in 1:N) {
  yr = y +(as.numeric(i))
  yr = as.character(yr)
  p <- paste0("c:/Users/Hp/Documents/",yr,".csv")

  #read.csv
  dat <- read.csv(p,header = TRUE, stringsAsFactors = F)
  #filter
  dat_sub <- filter(dat, hght_m > 0)
  dat_sub <- filter(dat_sub, temp_c > 0)
  dat1_sub <- filter(dat_sub, pres_hpa == 1000)
  dat2_sub <- filter(dat_sub, pres_hpa == 925)
  dat3_sub <- filter(dat_sub, pres_hpa == 850)
  dat4_sub <- filter(dat_sub, pres_hpa == 700)

  all.temp <- rbind(all.temp, dat1_sub, dat2_sub, dat3_sub, dat4_sub)
}

ggplot(data = all.temp, aes(x= as.Date(date), y = temp_c, group = pres_hpa, color = pres_hpa)) + geom_line()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...