Ich erhalte einen Fehler, bei dem meiner Meinung nach die Ursache darin liegt, dass in meinen Gruppierungen keine Werte für alle Gruppen vorhanden sind.Füllen Sie alle Elemente in der Gruppierung aus R
Daten können hier heruntergeladen werden: https://opendata.miamidade.gov/311/311-Service-Requests-Miami-Dade-County/dj6j-qg5t
Was ich zu tun ist, möchte eine Funktion haben, die eine verschachtelte Gruppierung nimmt und erkennt alle Löcher und auffüllt Nullen. Lets nehmen Probe den folgenden Code:
d <- rDSamp %>%
FilterDateRange("Ticket.Created.Date...Time", "1/1/2013", "12/31/2013") %>%
group_by(Ticket.Created.Date...Time, Case.Owner) %>%
summarise(
count = n()
) %>%
arrange(Ticket.Created.Date...Time)
Nach dem summarise, ich brauche eine Funktion hinzuzufügen, die durch jeden Tag geht, und wenn der Fall Inhaber nicht in diesem Zeitpunkt nicht vorhanden ist, den Fall Eigentümer erstellen, und ein hinzufügen Zahl von 0.
Hier ist der Code zu diesem Punkt zu kommen:
library("ggvis")
library("magrittr")
library("dplyr")
library("tidyr")
library("shiny")
library("checkpoint")
checkpoint("2016-03-29")
rData <- read.csv("C:\\data\\Miami_311.csv",
header=TRUE,
sep=",")
rDSamp <- rData[sample(1:length(rData$Case.Owner), 1000),]
rDSamp = rData %>%
subset(
Case.Owner == "Animal_Services" |
Case.Owner == "Waste_Management" |
Case.Owner == "Community_Information_and_Outreach" |
Case.Owner == "Waste_Management")
rDSamp$Case.Owner = factor(rDSamp$Case.Owner)
#Convert to known date time
rDSamp$Ticket.Created.Date...Time <-
rDSamp$Ticket.Created.Date...Time %>%
as.POSIXct(format="%m/%d/%Y") %>%
as.character()
FilterDateRange = function(data, feature, minDate, maxDate) {
minDate = minDate %>%
as.POSIXct(format="%m/%d/%Y") %>%
as.character()
maxDate = maxDate %>%
as.POSIXct(format="%m/%d/%Y") %>%
as.character()
result = subset(data, data[feature] <= maxDate)
subset(result, result[feature] >= minDate)
}
d <- rDSamp %>%
FilterDateRange("Ticket.Created.Date...Time", "1/1/2013", "12/31/2013") %>%
group_by(Ticket.Created.Date...Time, Case.Owner) %>%
summarise(
count = n()
) %>%
arrange(Ticket.Created.Date...Time)
Für die endgültigen Informationen, ich versuche ggvis layer_smooths und es berichtet zu verwenden na von coersion eingeführt ist, ist meine Vermutung Löcher in den Daten verursacht dies.
eine Lösung gefunden, für mehr generische Suche ...
FillDataHolesWithZeros = function(input){
countZero = input %>%
group_by(Ticket.Created.Date...Time) %>%
summarise(count = n()) %>%
filter(count < length(levels(input$Case.Owner)))
for(i in 1:nrow(countZero))
{
date = countZero[i,]$Ticket.Created.Date...Time
departments = input %>% filter(Ticket.Created.Date...Time == date)
myLevels = levels(input$Case.Owner)
for(j in 1:nrow(departments))
{
owner = departments[j,]$Case.Owner
myLevels = myLevels[myLevels != owner]
}
print(paste(i,":",myLevels))
for(k in 1:length(myLevels)){
input = input %>% rbind(data.frame(
Ticket.Created.Date...Time = date,
Case.Owner = myLevels[k],
count = 0
))
}
}
return(input)
}
Shiny-Tag, weil es eine glänzende Visualisierung antreibt, die den Fehler verursacht. Die glatte Handlung ist im Sterben begriffen. –
Für die NA-Frage, mein Datenrahmen hat keine NAs, bis ich versuche, die Handlung durchzuführen. Das Problem ist, dass der Datenrahmen vollständig ist. Wenn Sie jedoch nach Datum gruppieren, gibt es für einige der Fallbesitzer keine Zeilen, da an diesem Tag keine Anrufe für diese Abteilung getätigt wurden. Ich muss herausfinden, wie man Zeilen für diese Tage hinzufügt, in denen keine Besitzer existieren. –
Also nur Problem zeigen, haben Sie Daten.Rahmen mit Datumsspalte und Ihre haben Liste aller möglicher Daten (oder Intervall) und whant, um data.frame Zeilen hinzuzufügen? – Batanichek