В последнее время я работаю над анализом данных о лекарствах от рака с использованием «блестящих» упаковок. На третьей вкладке я хотел бы агрегировать и суммировать значения каждого года по значениям определенного диапазона лет, например. на два года, например, 1984 ~ 1985, 1986 ~ 1987, ... или на пять лет, например, 1984 ~ 1988, 1989 ~ 1993, ... и т. д. c. Год начала и последний год тоже должны быть гибкими. В этом случае, если я устанавливаю интервал на 6 лет и выбираю год начала как 1990, а последний год как 2012, ось x тепловой диаграммы должна быть представлена как 1990 ~ 1995, 1996 ~ 2001, 2002 ~ 2007, 2008 ~ 2012 год (всего пять лет вместо шести). Для меня это довольно сложно, и я ищу ответы, но не могу найти подходящего.
Код следующий. И данные доступны по гиперссылке . Спасибо!
library(ggplot2)
library(gapminder)
library(magrittr)
library(shiny)
library(tidyverse)
library(reshape)
library(tm)
library(dplyr)
library(data.table)
my_data=drug %>% distinct(drugbank, cancerType, .keep_all = TRUE)
my_druglist=my_data[!is.na(my_data$drugbank), ]
my_druglist=as.data.frame(gsub("[[:punct:]]", "", as.matrix(my_druglist)))
A=table(my_druglist$cancerType)
B=as.data.frame(A)
Z=table(my_druglist$drugbank)
Y=as.data.frame(Z)
X=table(Y$Freq)
V=as.data.frame(X)
M=table(my_druglist$drugName,my_druglist$PMIDYear)
data_melt=melt(M)
ui = fluidPage(
tags$script(type="text/javascript", src = "tabinfo.js"),
titlePanel(div("藥物數據分析")),
sidebarLayout(
sidebarPanel(),
mainPanel(
tabsetPanel(
tabPanel(title = "各癌症藥物種數",
selectInput(inputId="variable", label="Options:",
choices=c("descending order"="reorder(Var1,Freq)","ascending order"="reorder(Var1,-Freq)")
),
plotOutput(outputId ="CancerType")
),
tabPanel(title = "藥物與文獻的關係",
plotOutput(outputId ="papers")
),
tabPanel(title = "每藥物於各年度的文獻發表數",
sliderInput(inputId = "num",
label = "set the interval of years:",
value = 3, min = 1, max = 10),
selectInput(inputId="start", label="The beginning year:",
selected=min(as.numeric(my_druglist$PMIDYear)),
choices=sort(unique(as.numeric(my_druglist$PMIDYear)))),
selectInput(inputId="end", label="The last year:",
selected=max(as.numeric(my_druglist$PMIDYear)),
choices=sort(unique(as.numeric(my_druglist$PMIDYear)))),
selectInput(inputId="order", label="Order:",
choices=c("from A to Z"="reorder(Var.1, desc(Var.1))","from Z to A"="Var.1","ascending order"="reorder(Var.1,-value)","descending order"="reorder(Var.1,value)")),
plotOutput(outputId ="publishment")
)
)
)
)
)
server = function(input, output) {
output$CancerType <- renderPlot({
ggplot(data=D) +
aes_string(x="Freq", y=input$variable)+
geom_bar(stat="identity") +
geom_text(aes(label=Freq), vjust=0, hjust=-0.5, size=3, col="red")+
theme_minimal() +
ggtitle("各癌症藥物種數") +
xlab("藥物種數") +
ylab("癌症種類")
},height =1200)
output$papers <- renderPlot({
ggplot(data=V, aes(x=Freq, y=Var1)) +
geom_bar(stat="identity") +
geom_text(aes(label=Freq), vjust=-0.5, hjust=0.5, size=4, col="red")+
theme_minimal() +
coord_flip()+
ggtitle("藥物與文獻的關係") +
ylab("藥物已有文獻之癌症數") +
xlab("藥物數")
})
output$publishment <- renderPlot({
ggplot(data_melt%>% filter(Var.2 %in% (as.numeric(input$start):as.numeric(input$end))), aes_string("Var.2", input$order)) +
geom_tile(aes(fill=value))+
labs(x="Years", y="Drugs", title="每藥物於各年度的文獻發表數")+
scale_fill_gradient(low="white", high="royalblue4")+
theme(axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 0.5))
},height =4000)
}
shinyApp(ui = ui, server = server)
перевод: 藥物 數據 分析 анализ данных по лекарствам от рака 各 癌症 藥物 種 種 количество видов лекарств для каждого вида рака 藥物 與 文獻 的 關係 корреляция между лекарствами и бумагами 每 藥物 於 各 年度 的 文獻 發表 數 количество статей, публикуемых по каждому лекарству в год 藥物 (種) drug количество видов лекарств 癌症 type тип рака 藥物 已有 文獻 之 癌症 количество раковых заболеваний на основе статей о лекарствах