Frage zur for Schleife

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Weil R spuckt mir dann ja nur in der Konsole das hier aus:

Code: Alles auswählen

> dput(enden)
structure(c(2488.38, 4509.8, 2545.21, 3988.94, 5581.81, 6189.44, 
6391.61, 6236.95, 6395.16, 7536.19), .Dim = 10L, .Dimnames = list(
    c("2005", "2006", "2007", "2008", "2009", "2010", "2011", 
    "2012", "2015", "2016")))
aber wie bekomme ich die beiden Vektoren dann in unterschiedliche Variablen.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Frage zur for Schleife

Beitrag von jogo »

Hallo Lars,

das Ergebnis ist ein Vektor, wie Dir str(ende) berichtet. Das andere sind die Namen:

Code: Alles auswählen

names(ende)
Du möchtest die Namen löschen? Dann:

Code: Alles auswählen

names(ende) <- NULL
ende # Kontrolle
oder möchtest Du einen Dataframe daraus machen:

Code: Alles auswählen

data.frame(jahr=names(ende), ende=ende) # oder vielleicht sogar:
data.frame(jahr=as.numeric(names(ende)), ende=ende)
Gruß, Jörg
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Ich habe ja nun 1 dimensionalen Vektor aus welchen ich keine Zeile rausnehmen kann sondern nur Spalten. Ich würde aber gerne eine Regression der Werte machen wie ziehe ich die erste Zeile in einen Vektor und wie die 2 in einen anderen?
Im Moment sieht mein Ergebnis nämlich so aus:

Code: Alles auswählen

> enden
   2005    2006    2007    2008    2009    2010    2011    2012    2015    2016 
2488.38 4509.80 2545.21 3988.94 5581.81 6189.44 6391.61 6236.95 6395.16 7536.19 
>

aber ich hätte es gerne irgendwie so:

Code: Alles auswählen

x<- c(2488.38, 4509.8, 2545.21, 3988.94, 5581.81, 6189.44,6391.61, 6236.95, 6395.16, 7536.19)
y<-c("2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2015", "2016")
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Hat niemand für mein Problem eine Lösung?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Frage zur for Schleife

Beitrag von bigben »

Doch, Antworten haben wir, aber nicht immer an einem Werktag zur besten Arbeitszeit innerhalb einer halben Stunde. Dank Deinem dput weiß ich jetzt, wie Deine Daten aussehen und schlage vor:

Code: Alles auswählen

y <- as.numeric(names(enden))
summary(lm(enden ~ y))
plot(enden ~ y, type="b")
abline(lm(enden ~ y), lty=2)
'enden' ist schon ein Vektor, aber ein Vektor, dessen einzelne Werte Namen haben. Du brauchst also keine Variable x, weil enden schon alles hat, was Du Dir von x wünschst. Die Namen der Einträge von enden kann man mit names() extrahieren, muss die Namen dann aber noch in Zahlen umwandeln mit as.numeric().

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Vielen Dank!!
So bekomme ich die Jahre in den Vektor aber wie bekomme ich die Umsätze in einen Vektor?
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Oder ist das nicht möglich?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Frage zur for Schleife

Beitrag von bigben »

Ich dachte, 'enden' sei ein Vektor mit den Umsätzen? Ist er das nicht? Dann erkläre mir bitte nochmal, was 'enden' ist und wo die Umsätze stehen...
Ich habe extra in einem Edit die Grafik hinzugefügt, damit Du Dich vergewissern kannst, ob jetzt in der linearen Regression die richtigen x mit den richtigen y verrechnet wurden.

Verwirrte Grüße,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Frage zur for Schleife

Beitrag von jogo »

Hallo Lars,

ich nehme jetzt mal die Daten von dem Vektor enden - dort sollten ja laut Konstruktion die Umsätze für jedes Jahr aufsummiert sein. Wenn ich Dich richtig verstanden habe, möchtest Du folgendes machen:

Code: Alles auswählen

enden <- 
structure(c(2488.38, 4509.8, 2545.21, 3988.94, 5581.81, 6189.44, 
            6391.61, 6236.95, 6395.16, 7536.19), .Dim = 10L, .Dimnames = list(
              c("2005", "2006", "2007", "2008", "2009", "2010", "2011", 
                "2012", "2015", "2016")))

d <- data.frame(jahr=as.numeric(names(enden)), umsatz=enden)
lm(umsatz ~ jahr, data=d)
regr <- lm(umsatz ~ jahr, data=d)
summary(regr)
Ergebnis:

Code: Alles auswählen

> summary(regr)

Call:
lm(formula = umsatz ~ jahr, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-1452.15  -621.35    19.24   761.91   962.09 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)   
(Intercept) -818862.33  165089.30  -4.960  0.00111 **
jahr            409.99      82.14   4.992  0.00106 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 903.1 on 8 degrees of freedom
Multiple R-squared:  0.757,	Adjusted R-squared:  0.7266 
F-statistic: 24.92 on 1 and 8 DF,  p-value: 0.001064
Wenn das nicht passend ist, einfach nochmal ruhig uns erklären, was Du machen möchtest.

Gruß, Jörg
p.s.:

Code: Alles auswählen

plot(umsatz ~ jahr, data=d)
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Genau das hab ich gemeint vielen Dank, wie du daraus aber jetzt die Tabelle gemacht hast kann ich noch nicht wirklich nachvollziehen, aber das bekomme ich denke ich schon hin. Vielen Dank nochmal.
Antworten