У меня есть вектор, как показано нижеэкстракта в виде чисел из строки Вычислить
data <- c("6X75ML","24X37.5ML(KKK)", "6X2X75ML", "168X5CL (UUU)", "168X5CLKK (BUU)")
выше данные, в основном упаковки размеров бутылок в случае. Это означает, что в случае «6X75ML» имеется 6 бутылок из 75CL (Centi liters). Для «6X2X75ML», который в основном представляет собой пакет поощрений, имеет 6X2 = 12 бутылок 75 мл (миллилитра) в корпусе. мне нужно найти объем в литрах, имеющихся в каждом конкретном случае: например -
"6X75ML"
должен быть (6 * 75 * 0.001) = 0.45
литров
"24X37.5ML(KKK)"
должен быть (6 * 37.5 * 0.001) = 0.9
литров
"6X2X75ML"
должен быть (6 * 2 * 75 * 0.001) = 0.9
литров
[там может быть не более 3 цифр между X]
Конверсии: ML - Milli литров CL - Centi литров LTR - литры
1ML = 0.001LTR
1CL = 0.01LTR
В некоторых случаях, как и в выше не может быть ценности, как "168X5CLKK (Буу)", где нужно только CL быть приняты ,
У меня есть код ниже помогает мне найти количество бутылок в случае
dataList <- strsplit(data, split="X")
Pack <- sapply(dataList, function(x) prod(as.numeric(head(x, -1))))
например. «6X2X75ML» даст 12; «168X5CL (UUU)» дает 168 и т. Д.
Работая: strplit разбивает вектор вдоль «X». Полученный список подается в sapply, который выполняет операцию на всех, кроме конечного элемента каждого вектора в списке. Операция состоит в том, чтобы преобразовать элементы в числовые s и умножить их. Последний элемент отбрасывается с помощью head (x, -1).
Я не могу найти способ эффективный способ разбиения последнего элемента на получение тома.
значат ли (ККК) или (УУУ)?Вы можете использовать регулярное выражение, чтобы вырезать что-либо в скобках. Затем вы можете использовать второй-последний символ, чтобы определить, что 10^n, которое вы хотите размножить. (M, C или T) – tluh
Вы должны исправить свой пример. У вас есть «6X75CL» в тексте, но «6X75ML» в данных. –
Привет всем, может ли любая проверка с несколькими другими примерами, например: «6X180CL (LMD)», «6X75CL (JIH) (DELIST)». Кажется, здесь это не работает. – Ashwin