Ich arbeite an Microsoft SQL Management Studio 2016, mit der Funktion, die mich ein R-Skript in den SQL-Code hinzufügen. Meine Ziele sind, eine aPriori-Algorithmus-Prozedur zu erreichen, die die Daten in einer Art und Weise bringt, die ich mag, d. H. Eine Tabelle mit x, erstem Objekt, y, zweitem Objekt.SQL-Server und R, Data Mining
Ich stecke hier fest, weil ich meiner Meinung nach ein Problem in Daten habe. Der Fehler ist das.
A 'R' Skript-Fehler beim Ausführen von 'sp_execute_external_script' mit HRESULT 0x80004004.
Ein externes Skript Fehler aufgetreten: Fehler in eval (ausdr, envir, enclos) : schlechte Zuordnung von Anrufen: Quelle -> withVisible -> eval -> eval -> .Call
Hier mein Code. Die Quelldaten sind eine Tabelle von zwei Spalte wie folgt aus:
A B
a f
f a
b c
...
y z
Und hier der Code:
GO
create procedure dbo.apriorialgorithm as
-- delete old table
IF OBJECT_ID('Data') IS NOT NULL
DROP TABLE Data
-- create a table that store the query result.
CREATE TABLE Data (art1 nvarchar(100), art2 nvarchar(100));
-- store the query
INSERT INTO Data (art1, art2)
select
firstfield as art1,
secondfield as art2
from allthefields
;
IF OBJECT_ID('output') IS NOT NULL
DROP TABLE output
-- create table of the results of the analysis.
CREATE TABLE output (x nvarchar(100), y nvarchar(100));
INSERT INTO output (x, y)
-- R script.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
Nun ist die R-Skript. Die Daten, die ich von der Abfrage bekomme, sind numerisch, aber für das Apriori brauche ich Faktoren, also verbiege ich zuerst die Daten zu factor;
df<-data.frame(x=as.factor("art1"),y=as.factor("art2"))
Dann kann ich die apriori gelten:
library("arules");
library("arulesViz");
rules = apriori(df,parameter=list(minlen=2,support=0.05, confidence=0.05));
Ich brauche die Daten ohne das Format der Regeln, sondern einfach die Objekte:
ruledf <- data.frame(
lhs <- labels(lhs(rules)),
rhs <- labels(rhs(rules)),
[email protected])
a<-substr(ruledf$lhs,7,nchar(as.character(ruledf$lhs))-1)
b<-substr(ruledf$rhs,7,nchar(as.character(ruledf$rhs))-1)
ruledf2<-data.frame(a,b)
'
Und der letzte Teil:
, @input_data_1 = N'SELECT * from Data'
, @output_data_1_name = N'ruledf2'
, @input_data_1_name = N'ruledf2';
GO
Ich weiß nicht, wo ich fa bin I ling, weil die gleichen Dinge in R mit RODBC zu tun, um die db-Daten zu fangen, ist alles in Ordnung. Können Sie mir helfen? Danke im Voraus!