Ich benötige eine Schleife

For(), If(), While() und Verwandte. Diskussion von programmiertechnischen Fragen.

Ich benötige eine Schleife

Beitragvon R-Newcomer » Mi 7. Dez 2016, 16:24

Hallo zusammen,

bin noch ein ziemlicher Anfänger im Bereich R und hoffe, dass ich mich hier etwas weiterbilden kann.

Aktuell habe ich folgende Aufgabe:

In Spalte A habe ich 35 Werte stehen (Veränderung des Aktienkurses zum 31.12.2015)
In Spalte B habe ich 35 Werte stehen (Veränderung von Kennzahl 1 zum 31.12.2015)
In Spalte C habe ich 35 Werte stehen (Veränderung von Kennzahl 2 zum 31.12.2015)
usw.

Insgesamt sind es 10 Kennzahlen. Das ganze für 5 Jahre. Also ging ich davon aus, dass ich 50 .csv Dateien basteln muss. Der Hinweis lautete jedoch. Arbeiten Sie mit Schleifen.
Ich habe Schleifen bisher noch nicht kennengelernt und hoffe, dass hier jemand Ahnung davon hat.

Es müsste ja eine Schleife sein, die Spalte A und Spalte B in einer Linearen Regression prüft und danach Spalte A mit Spalte C usw. , so dass jede Kennzahl gegen den Aktienkurs getestet wird. Dann müsste ich nämlich nur 5.csv Dateien basteln und einlesen

Hat da jemand eine Idee?
R-Newcomer
 
Beiträge: 5
Registriert: Mi 7. Dez 2016, 16:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon lilchaos » Mi 7. Dez 2016, 18:20

Hey,

also erstmal wäre es schön wenn du reproduzierbaren code einstellen würdest, am besten mit den code tags und einer kleinen beispieltabelle arbeiten die man dann in R kopieren kann.

Leider habe ich keine ahnung was du warum vergleichen willst und was am ende dabei rauskommen soll.

Beschreibe doch mal das vorgehen welches du wählen würdest (einfach mal als text und das kann man dann in code übersetzen) und erleichtere das ganze indem du eine tabelle einstellst mit der man arbeiten kann.

Grüßle
lilchaos
 
Beiträge: 50
Registriert: Mi 22. Jun 2016, 20:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon R-Newcomer » Do 8. Dez 2016, 13:07

Anbei die Testdatei ... Das Anhängen einer .csv Datei funktioniert leider nicht

Bild

Spalte A = Unternehmensbezeichnungen
Spalte B = Veränderung Aktienkurs
Spalte C bis L = Veränderung der jeweiligen Kennzahl

Es soll geprüft werden ob es einen linearen Zusammenhang zwischen dem Aktienkurs und der jeweiligen Kennzahl gibt.

Dazu müsste B mit C, B mit D , B mit E usw verglichen werden

Dafür soll es angeblich eine Schleifenfunktion geben, welche die lineare Regression immer wieder durchführt und immer die nächste Spalte heranzieht bis sie bei L angekommen ist in dem Beispiel

Abrunden will ich das mit einer multiplen linearen Regression SPallte B gegen Spalte C-L
R-Newcomer
 
Beiträge: 5
Registriert: Mi 7. Dez 2016, 16:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon lilchaos » Do 8. Dez 2016, 17:30

Hey,

das Bild hilft leider nicht beim bearbeiten der Daten, hilfreich wäre wenn du eine kleine tabelle mit ein paar zeilen erstellt und diese hier postest mit code tags.

Das mit der schleife geht natürlich. Du möchtest quasi eine spalte beibehalten und alle anderen sollen dann gegen diese spalte geprüft werden. Sollen dabei alle spalten mit alles verglichen werden?

Du brauchst quasi für jede spalte eine schleife:
Code: Alles auswählen
data <- deinedaten
save <- list()
anzahlSpalten <- length(deinedaten[1,]) # gibt die die anzahl der spalten die du hast
for ( i in 2:anzahlSpalten) # wir fangen bei der 2. spalte an, da in der ersten ja nur daten stehen
spalte1 <- data[,i] #speichert die i-te spalte in spalte 1 ab
{
for (j in 2:anzahlSpalten)
{
spalte2 <- data[,j] # speichert die j-te spalte in spalte 2 ab
regression <- hier musst du die regression machen

}
}



Was hier passiert ist, dass i immer erst um 1 erhöht wird, wenn j alle werte durchläuft, dh erst wird spalte 2 mit allen spalten verglichen, dann spalte 3.
Hier ist nicht ausgenommen, dass 2 mit 2 verglichen wird usw aber wenn du das willst kann man das noch einbauen. Wie du die ergebnisse der regressionen speichern willst musst du dann natürlich noch entscheiden.

lg
lilchaos
 
Beiträge: 50
Registriert: Mi 22. Jun 2016, 20:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon R-Newcomer » Fr 9. Dez 2016, 11:59

Danke für die Antwort.

Ehrlich gesagt verstehe ich nicht wie ich das in Form einer anderen Tabelle besser darstellen könnte.
Wie du schon richtig verstanden hast, sollen alle Spalten nacheinander gegen die Spalte B regressiert werden.

1. Runde also B und C
2. Runde B und D
3. Runde B und E
4. Runde B und F
...

Es geht immer nur um Spalte B gegen eine andere Spalte. Untereinander müssen die Spalten nicht miteinander verglichen werden.
R-Newcomer
 
Beiträge: 5
Registriert: Mi 7. Dez 2016, 16:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon lilchaos » Fr 9. Dez 2016, 13:53

Hey,

ich meinte zB so etwas:
Code: Alles auswählen
data <- data.frame(A=c("Kurs1","Kurs2"),B=c(0.9,0.7),C=c(1,4)) #ein kleiner datensatz mit zwei zeilen und drei spalten den du dirkt in R kopieren kannst


anzahlSpalten <- length(data[1,]) # gibt die die anzahl der spalten die du hast
spalteB <- data$B

for ( i in 3:anzahlSpalten) # wir fangen bei der 3. spalte an, da in der ersten ja nur daten stehen und die 2. spalte B ist gegen das gestetet werden soll
{
spalte.test <- data[,i] #diese variable ändert sich nach jedem for, da sich mit jedem durchlauf i um 1 erhöht, bis es anzahlSpalten erreicht hat
regression <- hier musst du die regression machen: regression(spalteB~spalte.test
}

Hilft die das weiter? verstehst du was ich tue?

lg

lilchaos
 
Beiträge: 50
Registriert: Mi 22. Jun 2016, 20:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon R-Newcomer » Di 13. Dez 2016, 18:08

Also bisher habe ich es nicht ans Laufen bekommen. Hatte die letzten Tage aber auch wenig Zeit mich damit zu beschäftigen. Hoffe, dass ich es am Wochenende endlich ans Laufen bekommen. Vielen Dank für die Infos schon mal
R-Newcomer
 
Beiträge: 5
Registriert: Mi 7. Dez 2016, 16:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Ich benötige eine Schleife

Beitragvon lilchaos » Di 13. Dez 2016, 20:14

Hey,

hier nochmal der code ohne kommentare:

data <- data.frame(A=c("Kurs1","Kurs2"),B=c(0.9,0.7),C=c(1,4))


anzahlSpalten <- length(data[1,])
spalteB <- data$B

for ( i in 3:anzahlSpalten)
{
spalte.test <- data[,i]

}


in dem for{} musst du dann die regression für spalteB und spalte.test berechnen,
natürlich musst du dann die variable in der du die regressionsergebnisse speicherst nach jedem durchlauf irgendwo speichern (in einer liste oder ähnlichem), oder zB als csv ausschreiben.

Wenn es nicht klappt einfach deinen code mit den fehlermeldungen posten ;)
lilchaos
 
Beiträge: 50
Registriert: Mi 22. Jun 2016, 20:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Programmierkonzepte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron