2017-02-28 4 views
-1

私の目標のステップ1が実現しました(Thanks @akrun)が、ゴールラインをかなり越えているようです。非常に迅速に答えられた私の最初の質問と一緒に運んで、私はまだヒストグラムを作成することができません。LimeSurvey APIレスポンスを使用して作成されたデータフレームの動的Rヒストグラム

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 

と、私はこれが作成されるデータフレームの一例であるhelp後に得たところ、これは次のとおりです。

これは私が私の動的な出力が見えるようにしたいものの実施例です。列の数、名前、または観測数がわからないので、動的に動作する必要があります。

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") 

theDates <- as.Date(Date.submitted, "%Y-%m-%d %T") 

theDataFrame <- data.frame(timeline = as.list(theDates), 
          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, 
          stringsAsFactors = F) %>% 
    theDataFrame[-1] <- lapply(theDataFrame[-1], function(x) as.integer(x=="Yes")) %>% 
    gather(key = question, value = value, as.list(theDataFrame)) 

go <- ggplot(theDataFrame, aes(x = timeline, y = value, fill = question)) + 
    geom_bar(stat = "identity") 

go 

私はおそらく収集の仕方を誤解しているかもしれませんが、私はその周りに頭を浮かべているようです。

+0

何を達成したいですか?あなたの実例は私のために働く。あなたは何を変えたいですか? – ottlngr

+0

私は仕事に2番目を取得する必要があります。私が作成したデータフレームは、API呼び出しから返されるLimeSurveyの例です。異なる数の変数と観測値が存在するため、動的に動作する必要があります(列の数/名前を知らずに) –

答えて

0

In his comment、OPは、第2の例が機能するように要求した。これはOPのコードにいくつかの変更を行うことができます。

library(tidyr) 
library(ggplot2) 

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(
    timeline = as.Date(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, 
    stringsAsFactors = FALSE) 

theDataFrame[-1] <- lapply(theDataFrame[-1], function(x) as.integer(x=="Yes")) 
theDataFrame <- theDataFrame %>% gather(question, value, -timeline) 

go <- ggplot(theDataFrame, aes(x = timeline, y = value, fill = question)) + 
    geom_col() 
go 

enter image description here

関連する問題