R, Shiny - создать кросс-таблицу с определенным значением с помощью фильтров - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть таблица в SSMS, которую я запрашиваю, чтобы попытаться создать таблицу Crosstab в R, Shiny.Вот мои примерные данные:

HouseNum   SwitchNum   Date         Flipped
1          123         2/26/2019    U
1          123         2/26/2019    D
1          123         2/26/2019    U
1          123         2/26/2019    D
1          123         2/26/2019    U
1          456         2/26/2019    U
1          456         2/26/2019    D
1          456         3/1/2019     U
1          789         3/6/2019     U
1          789         3/6/2019     D
1          123         3/8/2019     U
1          123         3/8/2019     D
1          123         3/8/2019     U
1          123         3/8/2019     D
2          1122        3/8/2019     U
2          1122        3/8/2019     D
2          1122        3/8/2019     U
2          3344        3/9/2019     U
2          3344        3/9/2019     D
2          3344        3/10/2019    U
2          3344        3/10/2019    D

У нас есть дома с выключателями.Мы записываем, когда они перевернуты вверх (U) и вниз (D).Моя цель - создать кросс-таблицу в R, которая бы группировала HouseNum и SwitchNum и подсчитывала, сколько раз переключатель переключался вверх и вниз в каждую дату.В конечном итоге это показало бы следующее:

HouseNum    SwitchNum   2/26/2019   3/1/2019    3/6/2019    3/8/2019    3/9/2019    3/10/2019
1           123         U(3),D(2)                           U(2),D(2)       
1           456         U(1),D(1)   U(1)                
1           789                                 U(1),D(1)           
2           1122                                            U(2),D(1)       
2           3344                                                        U(1),D(1)   U(1),D(1)

Вот библиотеки, которые я сейчас использую:

library(dplyr)
library(DBI)
library(plotly)
library(shiny)
library(shinydashboard)
library(RJDBC)
library(readxl)
library(DT)
library(htmltools)
library(shinyBS)

А вот те, которые я пытался создать для этой кросс-таблицы:

library(xtable)
library(reshape)
library(rpivotTable)
library(ggplot2)
library(tidyr)
library(reshape2)

Мне нравится, как таблицы выглядят в DT, а также функции сортировки и фильтрации, которые идут с ним.Я хотел бы использовать аналогичную функциональность с Crosstab, если это возможно.

1 Ответ

0 голосов
/ 24 сентября 2019

Я решил эту проблему, создав поле concat в своем запросе SQL, чтобы вывести U или P с COUNT (Flipped), а затем вывести его в R следующим образом:

dcast(df, HouseNum + SwitchNum ~ Date, value.var = "Flipped", fun.aggregate = toString)
...