Ich habe einen Vektor, wie untenExtrakt als Zahlen aus einem String zu berechnen
data <- c("6X75ML","24X37.5ML(KKK)", "6X2X75ML", "168X5CL (UUU)", "168X5CLKK (BUU)")
Die obigen Daten ist grundsätzlich Flaschengrößen in einem Fall packen. Was es bedeutet, ist im Fall von "6X75ML" gibt es 6 Flaschen von 75CL (Centi Liter) Flüssigkeit jeder. Für "6X2X75ML", was im Grunde ein Promotion Pack ist, hat 6X2 = 12 Flaschen von 75ML (Milli Liter) in einem Fall. Ich brauche das Volumen in Litern je zu finden: zB -
"6X75ML"
sollte (6 * 75 * 0.001) = 0.45
Liter
"24X37.5ML(KKK)"
sollte (6 * 37.5 * 0.001) = 0.9
Liter
"6X2X75ML"
sollte (6 * 2 * 75 * 0.001) = 0.9
Liter
[es sein sein sein darf maximal 3 Stellen zwischen dem X]
betragenConversions: ML - Milli Liter CL - Centi Liter LTR - Liter
1ML = 0.001LTR
1CL = 0.01LTR
In einigen Fällen, wie in den oben könnte es Werte wie "168X5CLKK (BUU)", wo nur braucht CL genommen werden .
Ich habe den Code unten hilft mir, die Menge an Flaschen in einem Fall zu finden
dataList <- strsplit(data, split="X")
Pack <- sapply(dataList, function(x) prod(as.numeric(head(x, -1))))
zB. "6X2X75ML" geben 12; "168X5CL (UUU)" ll geben 168 usw.
Funktion: strplit bricht den Vektor entlang "X". Die resultierende Liste wird an sapply übergeben, die eine Operation an allen außer dem letzten Element jedes Vektors in der Liste durchführt. Die Operation besteht darin, die Elemente in numerische s umzuwandeln und sie zu multiplizieren. Das letzte Element wird mit head (x, -1) gelöscht.
Ich bin nicht in der Lage, einen Weg zu finden um eine effiziente Möglichkeit, das letzte Element aufteilen, um das Volumen zu erhalten.
Hat die (KKK) oder (UUU) alles bedeuten?Sie könnten Regex verwenden, um alles in Klammern zu entfernen. Dann können Sie das vorletzte Zeichen verwenden, um zu bestimmen, mit welchem 10^n Sie multiplizieren möchten. (M, C oder T) – tluh
Sie sollten Ihr Beispiel beheben. Sie haben "6X75CL" 'im Text aber" 6X75ML "' in den Daten. –
Hallo alle, kann wone überprüfen mit ein paar anderen Beispielen wie: "6X180CL (LMD)", "6X75CL (JIH) (DELIST)". Es scheint hier nicht zu funktionieren. – Ashwin