Aufbau würde Ich mag eine Matrix mit bestimmten Werten für die Schleifeeine Matrix mit spezifischen Werten für die Schleife in R
Spaltennamen bauen:
unique(flowdata$name)
Row Namen:
unique(flowdata$attrs[which(flowdata$metadata=='name')])
Werte: die Meanvalue der outputGroup 0 und 2 *
Unten ist mein Code, aber wenn ich es laufen lasse, erhalte ich einen Fehler
Error in `[<-`(`*tmp*`, row.name, col.name, value = 6876) :
subscript out of bounds
Die Matrix Ich möchte sagen, schaffen: für die erste Spalte „Essigsäure, ab Werk“, sollte es zurückgeben Wert von "1" für "Essigsäure, im Werk (in Reihe 1)" und "0,18841" für "Rückgewonnene Energie, bei der Essigsäureproduktion (in Reihe 2)".
Hier ist meine verkürzte Beispieldaten: https://www.dropbox.com/s/10it07wqzfwctd6/Data_Sample.txt?dl=0
n.up = length(unique(flowdata$name)) # number of unit processes
n.p = length(unique(flowdata$attrs[which(flowdata$metadata=='name')]))
#number of inputs/outputs
output.mat <- matrix(0,n.p,n.up) #empty matrix
colnames(output.mat) <- unique(flowdata$name) # up names
rownames(output.mat) <-
unique(flowdata$attrs[which(flowdata$metadata=='name')])
# inputs/outputs names
# check output.mat size
data <- flowdata
for (i in 1:nrow(data)){ # for every row in data
if ((data$metadata[i]=='outputGroup' && data$attrs[i] == 0) ||
(data$metadata[i]=='outputGroup' && data$attrs[i] == 2)){ # if it is an
#output and it is a reference product or a co-product
col.name <- data$name[i] # up name
row.name <- data$attrs[i-4] # i/o name
value <- as.numeric(data$attrs[i-5]) #value
output.mat[row.name,col.name] <- value
}
}
output.mat <- output.mat[-which(rowSums(output.mat)==0),] # if the row is
#empty, then the flow was an input or output of no interest
Sie werden wahrscheinlich schnelle Hilfe bekommen, wenn Sie eine * kleine * reproduzierbare Datenprobe in Frage stellen. Ist es wirklich so komplex, dass Sie die Leute bitten müssen, Tausende von Datenzeilen herunterzuladen, um das Problem zu veranschaulichen? Die meisten Probleme können mit weniger als 20 Datenzeilen dargestellt werden. – Gregor
Sie werden feststellen, dass Sie eine bessere Hilfe und schnellere Hilfe auf der Website erhalten, wenn Sie (1) * kleine, kopier- und einfügbare * Beispieldaten bereitstellen, (2) beschreiben, was Sie in Worten tun, sowie Code und (3) zeigen Sie die gewünschte Ausgabe für Ihre Beispieleingabe an. Der Text Ihrer Frage beschreibt Ihre Daten, beschreibt jedoch nicht, was Ihr Code zu tun versucht. – Gregor