Нарисуйте грани графиков для каждого типа значения - PullRequest
1 голос
/ 05 мая 2020

Я рисую график с помощью этого кода:

require(zoo)
raw_df1_zoo <-zoo(raw_df1[raw_df1$ID == '300',]$`N`, order.by = raw_df1[raw_df1$ID == '300',]$Date)

plot(raw_df1_zoo, xlab = "Date", ylab = "N")

Как видите, я рисую график для данных с ID равным 300. Но я хочу нарисовать грани 4 участков для данных с идентификаторами из этого list:

c(300, 301, 302, 303)

Как я мог это сделать? Я новый в R)

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Не уверен, что понял, но попробуйте:

par(mfrow=c(2,2))
for (i in c(300, 301, 302, 303)){
  raw_df1_zoo <-zoo(raw_df1[raw_df1$ID == i,]$`N`, order.by = raw_df1[raw_df1$ID == paste0(i,'T'),]$Date)
  plot(raw_df1_zoo, xlab = "Date", ylab = "N")
}

при условии, что 300T должен быть адаптирован к 301T, 302T, ...

0 голосов
/ 05 мая 2020

Рассмотрим by, чтобы разрезать ваши данные по коэффициенту (-ам). Четный paste ID в основном заголовке графика:

# SET UP PLOTS BY 2 ROWS AND 2 COLUMNS
par(mfrow=c(2, 2))                                 

# RUN GROUPING ITERATION
output <- by(raw_df1, raw_df1$ID, function(sub) {
   sub_zoo <-zoo(sub$`N`, order.by = sub$date)
   plot(raw_df1_zoo, xlab = "Date", ylab = "N",
        main = paste(sub$ID[[1]], "of N Series"))
})

Для демонстрации со случайными, засеянными данными:

set.seed(552020)

raw_df1 <- data.frame(
  group = sort(rep(c("sas", "stata", "spss", "python", "r", "julia"), 90)),
  date = rep(seq.Date(Sys.Date() - 89, Sys.Date(), by="day"), 6),
  N = rnorm(540)
)    

par(mfrow=c(2, 3))
output <- by(raw_df1, raw_df1$group, function(sub) {
   sub_zoo <- zoo(sub$`N`, order.by = sub$date)
   plot(raw_df1_zoo, xlab = "Date", ylab = "N",
        main = paste0(sub$group[[1]], " of N Series"))
})

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...