从反应数据集中重新编码变量

时间:2018-05-09 08:58:15

标签: r shiny

让我再试一次:):

我写了一些闪亮的代码,其中一些心理治疗师可以对问卷进行图形诊断。

我有不同的时间戳(messzeitpunkte),这些问卷已经完成。根据这些时间戳,构建不同的数据集(f.e):

ui <- fluidPage(
  titlePanel(title = "Individualdiagnostik HSA"),
    sidebarLayout(
      sidebarPanel(
        fileInput(inputId = "datensatz", label = "1. Datensatz laden"),                     
          textInput(inputId = "pchiffre", label = "2. Patientenchiffre"),                     
            selectInput(inputId = "messzeitpunkt", label = "3.Messezeitpunkt auswählen",          ### Auswahl Dropdown Messzeitpunkt
              multiple = FALSE, selected = NULL,                                                   
                choices = c("Baseline" = "base",
                  "T0"       = "t0",
                  "T6"       = "t6",
                  "T12"      = "t12",
                  "T18"      = "t18",
                  "End"      = "end")),

server <- function(input, output) {
  datensatz_patient <- reactive({datensatz <- input$datensatz
    infile <- read.csv(datensatz$datapath, header = TRUE, ";", na = -77)
    patient <- input$pchiffre
    subset(infile, Chiffre == patient)})

messzeitpunkt <- reactive(input$messzeitpunkt)

CTQ_dat <- reactive(
  if (messzeitpunkt() == "base") 
    {subset(datensatz_patient(), select = c(Base_CTQ_v1:Base_CTQ_v28))} 
  else if (messzeitpunkt() == "end")
    {subset(datensatz_patient(), select = c(End_CTQ_v1:End_CTQ_v28))} else {})

现在我需要在CTQ_dat()中重新编码一些变量。

我试过了:

CTQ_dat <- reactive(if (messzeitpunkt() == "base") 
    {subset(datensatz_patient(), select = c(Base_CTQ_v1:Base_CTQ_v28)) }
  else if (messzeitpunkt() == "end")  
    {subset(datensatz_patient(), select = c(End_CTQ_v1:End_CTQ_v28)) } 
  else {})
(if ((CTQ_dat[5]) == "5") {Recode(CTQ_dat[5], "5=1")}))

recode(CTQ_dat()[5], "1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[7], "1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[10],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[13],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[16],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[19],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[22],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[26],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")
recode(CTQ_dat()[28],"1=5; 2=4; 3=3; 4=2; 5=1; NA=NA")})

对我没用。有人可以给我一个提示我的错误吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您需要将CTQ_dat()视为一项功能而不是数据框架。 函数中的最后一个运行行将是该函数的返回值。

我改变了你的功能,但无法测试它,因为我没有数据。

CTQ_dat <- reactive(
  if (messzeitpunkt() == "base") 
  {
    df <- subset(datensatz_patient(), select = c(Base_CTQ_v1:Base_CTQ_v28)) 
  } else {
    if (messzeitpunkt() == "end")  
    {
      df <- subset(datensatz_patient(), select = c(End_CTQ_v1:End_CTQ_v28)) } 
  } else {
    df <- datensatz_patient()
  }
  if (df[5] == "5") {
    Recode(df[5], "5=1")
  }
  df
)