У меня есть набор данных в этом формате:

#albaran|fecha|cliente|estado|descrip|destinatario|direccion|cp|poblacion|observaciones
#11111|43229|C1|E1|D1|DD1|DIR1|CP1|P1|COLECCIÓN CLÁSICOS DISNEY - Entrega Nº: 11, 12, 13, 14; Grandes Enigmas - Entrega Nº: 5, 6
#22222|43229|C2|E2|D2|DD2|DIR2|CP2|P2|COLECCIÓN CLÁSICOS DISNEY - Entrega Nº: 8, 9; Otro Pedido - Entrega Nº: 1, 2
И мне нужно конвертировать на:

#albaran|fecha|cliente|estado|descrip|destinatario|direccion|cp|poblacion|pedido|entregas
#11111|43229|C1|E1|D1|DD1|DIR1|CP1|P1|COLECCIÓN CLÁSICOS DISNEY|11, 12, 13, 14
#11111|43229|C1|E1|D1|DD1|DIR1|CP1|P1|Grandes Enigmas|5, 6
#22222|43229|C2|E2|D2|DD2|DIR2|CP2|P2|COLECCIÓN CLÁSICOS DISNEY|8, 9
#22222|43229|C2|E2|D2|DD2|DIR2|CP2|P2|Otro Pedido|1, 2
Я пытаюсь с
library(data.table)
hec1 <- as.data.table(dataset)
res <- hec1[,strsplit(observaciones, split = ";"),by = c("albaran", "fecha", "cliente", "estado", "descrip", "destinatario", "direccion", "cp", "poblacion")]
res[, pedido:= substring(observaciones, 1, regexpr(":", observaciones)-2)][, entregas := substring(observaciones, regexpr(":", observaciones)+2, nchar(observaciones))]
res$V1 <- NULL
res <- res[,strsplit(entregas, split = ","),by = c("albaran", "fecha", "cliente", "estado", "descrip", "destinatario", "direccion", "cp", "poblacion", "tipo_pedido")]
setnames(res, "pedido", "entregas")
res
Но это не работает, покажите мне эту ошибку:
Ошибка в strsplit (observaciones, split = ";"): аргумент типа
Звонки запрещены: [-> [.data.table -> strsplit Ejecución
interrumpida
Я думаю ... может быть проблема в формате оригинала? Это data.table
.
Спасибо @prem, ваш пример хорошо работает на RStudio, я пытаюсь выполнить этот скрипт на PowerBI Script, но покажите мне эту ошибку
Ошибка в UseMethod ("Отдельные_строки_"):
нет применимого метода для 'Отдельные_строки_', примененные к объекту ...
ErrorCode = -2147467259
ExceptionType = Microsoft.PowerBI.Radio.RScriptRuntimeException
Когда я пытаюсь использовать библиотеку dplyr, я получаю следующую ошибку
DataSource.Error: ADO.NET: ошибка сценария R.
Прикрепленный пакет: 'dplyr'
Следующие объекты маскируются из 'package: stats':
фильтр, лаг
Следующие объекты маскируются из 'package: base':
пересечение, setdiff, setequal, союз
Ошибка в UseMethod ("Отдельные_строки_"):
нет применимого метода для 'Отдельные_строки_', примененные к объекту класса> "функция"
Вызовы:%>% ... Отдельные_робы -> Отдельные_строки.default-> Отдельные_робы_
Ejecución interrumpida
Этот пакет совместим с PowerBI https://docs.microsoft.com/es-es/power-bi/service-r-packages-support
Это код, я не могу использовать tidyverse, потому что он не совместим.
library(ggplot2)
library(tibble)
library(tidyr)
library(readr)
library(ggplot2)
library(stringr)
library(forcats)
library(dplyr)
df %>%
separate_rows("observaciones", sep = ";") %>%
separate(observaciones, c("pedido", "entregas"), " - Entrega Nº ")
Проблема решена, спасибо @ Prem
Это окончательная версия:
library(ggplot2)
library(tibble)
library(tidyr)
library(readr)
library(ggplot2)
library(stringr)
library(forcats)
library(dplyr)
library(data.table)
df <- as.data.table(dataset)
df <- df %>%
separate_rows("observaciones", sep = ";") %>%
separate(observaciones, c("pedido", "entregas"), " - Entrega Nº:")
df <- df %>%
separate_rows("entregas", sep = ", ") %>%
separate(entregas, c("entregas"), ",")
df <- df %>%
separate_rows("entregas", sep = "y") %>%
separate(entregas, c("entregas"), ",")