Как отобразить данные по другой группе?

#r #ggplot2

#r #ggplot2

Вопрос:

У меня есть фрейм данных, как показано ниже,

 structure(list(X = 4L, day = structure(1546556400, class = c("POSIXct", 
"POSIXt"), tzone = ""), Dew.Point..S.THB.10990050.10979038.3....C..IGN.Brandbjerg.Met = 
3.89458333333333, 
PAR..S.LIA.10990050.10977527.1...uE..IGN.Brandbjerg.Met.2.m = 36.9756944444444, 
RH..S.THB.10990050.10979038.2......IGN.Brandbjerg.Met.2.m = 93.8670138888889, 
Solar.Radiation..S.LIB.10990050.10981132.1...W.m.2..IGN.Brandbjerg.Met.2.m = 17.5173611111111, 
Rain = 0, Pressure = 1021.72534722222, Temperature.Air.T.2.m = 4.79805555555556, 
Temperature.0.5.cm.Calluna = 4.26552083333333, Temperature..0.5.cm.Deschampsia = 4.26229166666667, 
SWC.0.10.Calluna = 0.143915277777778, SWC.0.10.Deschampsia = 0.145047569444444, 
Tsoil_11 = 3.93118055555556, Tsoil_12 = 3.31326388888889, 
Tsoil_13 = 3.39402777777778, Tsoil_14 = 4.02045138888889, 
Tsoil_21 = 4.40982638888889, Tsoil_22 = 4.49684027777778, 
Tsoil_23 = 4.47291666666667, Tsoil_24 = 4.18284722222222, 
Tsoil_31 = 4.1540625, Tsoil_32 = 4.10364583333333, Tsoil_33 = 3.84708333333333, 
Tsoil_34 = 3.57652777777778, SWC_11 = 0.196202777777778, 
SWC_12 = 0.265491666666667, SWC_13 = 0.273163194444444, SWC_14 = 0.206322222222222, 
SWC_21 = 0.243164583333333, SWC_22 = 0.2235375, SWC_23 = 0.212259027777778, 
SWC_24 = 0.217371875, SWC_31 = 0.131544791666667, SWC_32 = 0.167493055555556, 
SWC_33 = 0.188492708333333, SWC_34 = 0.226024305555556, Tsoil_41 = 4.624375, 
Tsoil_42 = 4.38045138888889, Tsoil_43 = 3.55361111111111, 
Tsoil_44 = 4.21378472222222, Tsoil_51 = 3.92625, Tsoil_52 = 3.76736111111111, 
Tsoil_53 = 3.780625, Tsoil_54 = 3.99416666666667, Tsoil_61 = 4.50618055555556, 
Tsoil_62 = 4.16097222222222, Tsoil_63 = 4.48430555555556, 
Tsoil_64 = 4.18666666666667, SWC_41 = 0.184280555555556, 
SWC_42 = 0.241078472222222, SWC_43 = 0.248336111111111, SWC_44 = 0.214388888888889, 
SWC_51 = 0.247181597222222, SWC_52 = 0.253651736111111, SWC_53 = 0.2355375, 
SWC_54 = 0.232023611111111, SWC_61 = 0.255844097222222, SWC_62 = 0.216786805555556, 
SWC_63 = 0.247850347222222, SWC_64 = 0.213776041666667), row.names = 4L, class = "data.frame")
  

Сначала я просто хочу построить взаимосвязь между SWC_plots и днем.
Мой код

  daily_avedata$day <- as.POSIXct(daily_avedata$day,format = "%Y-%m-%d ")   #tz="GMT"
Time<-daily_avedata$day

 # transform the data from wide to long using gather function to plot multiple y with single x diagram.
 swc<- daily_avedata[, grep("SWC_",names(daily_avedata))]
 subdat<-cbind(Time,swc)

 sub_long<- gather(subdat, SWC_Plots, swc, -Time)
 ggplot(sub_long, aes(Time, swc, color=SWC_Plots)) 
 geom_point()
  

И этот грубый код работает.

Затем я хочу сгруппировать данные SWC_plots, а затем отобразить их с указанием дня / времени. Я имею в виду, что я собираюсь установить SWC_plots для разных обработок (A, B), а затем построить график, точно так же, как группировка swc_11/12/21/22/33/34/53/54/61/62 к группе А, в то время как другие графики относятся к группе В, а затем строят график зависимости между днем и обработками водин график.

Надеюсь, кто-нибудь может помочь. Спасибо!

Ответ №1:

Может быть, вы ищете это. После изменения формы вы можете создать групповую переменную на основе SWC . После этого вы можете использовать facet_wrap() , чтобы увидеть поведение по группам. Я использовал данные, которыми вы поделились:

 library(tidyverse)
#Code
sub_long<- gather(subdat, SWC_Plots, swc, -Time)
#Separate
sub_long %>% mutate(Dup=SWC_Plots) %>%
  separate(Dup,c('V1','V2'),sep = '_') %>% select(-V1) %>%
  mutate(Group=ifelse(as.numeric(V2) %in% c(11,12,21,22,33,34,53,54,61,62),'A','B')) %>%
  ggplot(aes(Time, swc, color=SWC_Plots,group=Group)) 
  geom_point() 
  facet_wrap(.~Group,nrow = 1,scales='free')
  

Вывод:

введите описание изображения здесь