我使用API調用LimeSurvey將數據導入我正在處理的Shiny R應用程序。然後,我操縱數據框,以便只有某個人隨着時間的推移才能做出迴應。數據幀可以是這樣的:動態R數據框 - 更改是/否對1/0的響應
Appetite <- c("No","Yes","No","No","No","No","No","No","No")
Dental.Health <- c("No","Yes","No","No","No","No","Yes","Yes","No")
Dry.mouth <- c("No","Yes","Yes","Yes","Yes","No","Yes","Yes","No")
Mouth.opening <- c("No","No","Yes","Yes","Yes","No","Yes","Yes","No")
Pain.elsewhere <- c("No","Yes","No","No","No","No","No","No","No")
Sleeping <- c("No","No","No","No","No","Yes","No","No","No")
Sore.mouth <- c("No","No","Yes","Yes","No","No","No","No","No")
Swallowing <- c("No","No","No","No","Yes","No","No","No","No")
Cancer.treatment <- c("No","No","Yes","Yes","No","Yes","No","No","No")
Support.for.my.family <- c("No","No","Yes","Yes","No","No","No","No","No")
Fear.of.cancer.coming.back <- c("No","No","Yes","Yes","No","No","Yes","No","No")
Intimacy <- c("Yes","No","No","No","No","No","No","No","No")
Dentist <- c("No","Yes","No","No","No","No","No","No","No")
Dietician <- c("No","No","Yes","Yes","No","No","No","No","No")
Date.submitted <- c("2002-07-25 00:00:00",
"2002-09-05 00:00:00",
"2003-01-09 00:00:00",
"2003-01-09 00:00:00",
"2003-07-17 00:00:00",
"2003-11-06 00:00:00",
"2004-12-17 00:00:00",
"2005-06-03 00:00:00",
"2005-12-17 00:00:00")
theDataFrame <- data.frame(Date.submitted,
Appetite,
Dental.Health,
Dry.mouth,
Mouth.opening,
Pain.elsewhere,
Sleeping,
Sore.mouth,
Swallowing,
Cancer.treatment,
Support.for.my.family,
Fear.of.cancer.coming.back,
Intimacy,
Dentist,
Dietician)
需要明確的是,這數據幀可以包含更多(或更少)比上面的例子更多(或更少)的變量的觀察。
我的目標是做一個動態直方圖,看起來像下面這樣:
library(dplyr)
library(ggplot2)
library(tidyr)
df <- data.frame(timeline = Sys.Date() - 1:10,
q3 = sample(c("Yes", "No"), size = 10, replace = T),
q4 = sample(c("Yes", "No"), size = 10, replace = T),
q5 = sample(c("Yes", "No"), size = 10, replace = T),
q6 = sample(c("Yes", "No"), size = 10, replace = T),
q7 = sample(c("Yes", "No"), size = 10, replace = T),
q8 = sample(c("Yes", "No"), size = 10, replace = T),
stringsAsFactors = F) %>%
mutate(q3 = ifelse(q3 == "Yes", 1, 0),
q4 = ifelse(q4 == "Yes", 1, 0),
q5 = ifelse(q5 == "Yes", 1, 0),
q6 = ifelse(q6 == "Yes", 1, 0),
q7 = ifelse(q7 == "Yes", 1, 0),
q8 = ifelse(q8 == "Yes", 1, 0)
) %>%
gather(key = question, value = value, q3, q4, q5, q6, q7, q8)
g <- ggplot(df, aes(x = timeline, y = value, fill = question)) +
geom_bar(stat = "identity")
g
我想我會需要使用庫(lubridate)的時間表,因爲整個數據幀是純文本。我處理''。列名如下:
myColNames <- colnames(theDataFrame)
myNames <- myColNames
myNames <- gsub("^X\\.\\.", "", myNames)
myNames <- gsub("\\.", " ", myNames)
names(theDataFrame) <- myNames # items in myChoices get "labels" from myNames
但是最具挑戰性的方面是讓它動態工作。該數據集將只包含Date.submitted和(x)額外列的數目將只是「是」或「否」
我希望我已經提供了足夠的信息(這是我在Stack Exchange上的第一個問題!)
就這一點,我已經得到了,但我似乎無法讓我周圍的最後一點頭......我會發佈一個新的問題 –
,然後這個不起作用... | ... stringsAsFactors = F)%>% gather(%data_frame [-1],(x)as.integer(x ==「是」))%>% gather key = question,value = value,as.list(theDataFrame)) is.character(x)不是TRUE我很困惑 –
@JasonJorgenson不確定我收到你的第二條評論 – akrun