Fehler: dimnames(x) <- dn
Verfasst: Mi Mai 20, 2020 4:09 pm
Hallo liebe R-Experten,
ich komme direkt auf den Punkt: Das Ausführen meines Programmes funktioniert, aber wenn ich ein print(<data.table>) ausführe, bekomme ich folgenden Fehler:
Ich hoffe ihr könnt mir weiterhelfen und mir eine kurze Erklärung geben, warum der Fehler auftaucht, da ich Neuling in R bin.
Vielen Dank schon mal im Voraus.
Gruß und schönes Wochenende
Christian
Anhang
Wende ich nachdem Einlesen der Datei an kommt folgndes Ergebnis:
ich komme direkt auf den Punkt: Das Ausführen meines Programmes funktioniert, aber wenn ich ein print(<data.table>) ausführe, bekomme ich folgenden Fehler:
Natürlich habe ich schon Google verwendet, aber nicht auf eine plausible Erklärung gekommen.Fehler in dimnames(x) <- dn :
Länge von 'dimnames' [1] ungleich der Arrayausdehnung
Zusätzlich: Warnmeldung:
In cbind(Timestamp = c("2020-04-27 07:16:37", "2020-04-27 07:17:27", :
number of rows of result is not a multiple of vector length (arg 1)
Ich hoffe ihr könnt mir weiterhelfen und mir eine kurze Erklärung geben, warum der Fehler auftaucht, da ich Neuling in R bin.
Vielen Dank schon mal im Voraus.
Gruß und schönes Wochenende
Christian
Anhang
Code: Alles auswählen
library(data.table)
library(lubridate)
# Stoerdaten aufbereiten
# -- generalDataFormating -- soll den Dateinamen uebergeben bekommen,
# in der die Daten der Stoerungen stehen. Anschlie?end soll die Datei gelesen werden und formatiert werden
# -- Call by -- dataname muss ein string sein und die Dateiendung beinhalten
# -- return -- data.table mit den aufbereiteten Daten
gerneralDataFormating <- function(dataname){
# Datei einlesen.
# Vorsicht: das richtige working-directory muss ausgewaehlt sein.
dt <- fread(dataname, stringsAsFactors = F)
# Daten aufbereiten
dt[, Zustand := NULL]
#dt[, Störort := NULL]
setnames(dt, c("Datum und Uhrzeit"), c("Timestamp"))
dt <- dt[,c("Timestamp",
"Maschine",
"Meldungsart",
"Station",
"Fehlertext",
"Dauer [s]",
"Meldenummer",
"KW",
"Tag",
"Monat",
"Jahr")]
#setnames(dt, c("Datum und Uhrzeit"), c("Timestamp"))
setnames(dt, c("Dauer [s]"), c("Dauer"))
dt[, Maschine := as.factor(Maschine)]
dt[, Meldungsart := as.factor(Meldungsart)]
dt[, Station := as.factor(Station)]
dt[, Fehlertext := as.factor(Fehlertext)]
dt[,Timestamp := dmy_hms(Timestamp)]
dt[, `:=` (Uhrzeit = hours(hour(Timestamp)) + minutes(minute(Timestamp)) + seconds(second(Timestamp)))]
setnames(dt, c("Meldungsart"), c("Stationsnummer"))
setnames(dt, c("Station"), c( "Meldungsart"))
#setnames(dt, c("Datum und Uhrzeit"), c("Timestamp"))
return(dt)
}
# Stoerdaten verarbeiten
# -- interruptAnalyse -- soll aufbereitete Stoerdaten uebergeben bekommen. Danach sollen die Stoerdaten auf Haeufigkeit
# und Dauer der Stoerungen in Bezug auf den Stoerort anlysiert werden.
# -- Achtung --
# -- Call by -- Als Parameter sollen hier Datum und optional die Zeit f?r den Start des Zeitraums ?bergeben werden.
# Gleiches gilt fuer den Endzeitpunkt
# Zusaetzlich muss eine data.table mit Stoerdaten uebergeben werden.
# -- return -- sollen data.tables sein. Die erste soll die Stoerungen nach ihrer Anzahl auflisten,
# die zweite nach der Dauer. Jeweils soll ein absteigendes Ranking verwendet werden.
interruptAnalyse <- function (dt, time.start, time.end){
# "Timestamp","Maschine","Stationsnummer","Meldungsart","Fehlertext","Dauer","Meldenummer", "KW", "Tag", "Monat", "Jahr
#dt[, Meldungsart := NULL]
dt[, KW := NULL]
dt[, Tag := NULL]
dt[, Monat := NULL]
dt[, Jahr := NULL]
# "Timestamp,"Maschine","Stationsnummer","Meldungsart","Fehlertext","Dauer"
dt[Timestamp>time.start & Timestamp < time.end, ]
# In die Dauer der Stoerungen darf die Pausenzeit nicht mit einbezogen werden
### Ist die Stunde:Minute:Sekunde +Dauer der Stoerung [s]
### > Stunde:Minute:Sekunde der Pause ?
# Haeufigkeit der Stoerungen in Bezug auf Stationsnummer, Meldungsart, und Fehlertext
res <- dt[, .(Haeufigkeit = .N, DauerGesamt = sum(Dauer)),
keyby = c("Stationsnummer", "Meldungsart", "Fehlertext")]
return(res)
}
### Zeitraum festlegen
# Start: 27.04.2020 00:00:00 Uhr
# Ende: 01.05.2020 00:00:00 Uhr
pausen <- data.table(Fruehschicht = c(period_to_seconds((hours(8) + minutes(45))), period_to_seconds((hours(11) + minutes(45)))),
Spaetschicht = c(period_to_seconds(hours(15) + minutes(45)), period_to_seconds((hours(19) + minutes(45)))),
Nachtschicht = c(period_to_seconds(hours(0) + minutes(45)), period_to_seconds(hours(3) + minutes(45)))
)
date.start <- dmy_hms("27.04.2020 00:00:00")
date.end <- dmy_hms("28.04.2020 00:00:00")
dt7116.18 <- gerneralDataFormating("xy.csv")
res <- interruptAnalyse(dt7116.18, date.start, date.end)
print(dt7116.18)
Code: Alles auswählen
sapply(dt,class)
Code: Alles auswählen
Datum und Uhrzeit Störort Maschine Meldungsart Station Fehlertext
"character" "integer" "character" "character" "character" "character"
Dauer [s] Zustand Meldenummer KW Tag Monat
"integer" "character" "integer" "integer" "integer" "integer"
Jahr V14 V15 V16 V17 V18
"integer" "logical" "logical" "logical" "logical" "logical"
V19 V20 V21 V22 V23 V24
"logical" "logical" "logical" "logical" "logical" "logical"
V25 V26 V27 V28 V29 V30
"logical" "logical" "logical" "logical" "logical" "logical"
V31 V32 V33 V34 V35 V36
"logical" "logical" "logical" "logical" "logical" "logical"
V37 V38 V39 V40 V41 V42
"logical" "logical" "logical" "logical" "logical" "logical"
V43 V44 V45 V46 V47 V48
"logical" "logical" "logical" "logical" "logical" "logical"
V49 V50 V51 V52 V53 V54
"logical" "logical" "logical" "logical" "logical" "logical"
V55 V56 V57 V58 V59 V60
"logical" "logical" "logical" "logical" "logical" "logical"
V61 V62 V63 V64 V65 V66
"logical" "logical" "logical" "logical" "logical" "logical"
V67 V68 V69 V70
"logical" "logical" "logical" "logical"
>