Datensatz bereinigen mit Schleife

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

Datensatz bereinigen mit Schleife

Beitragvon lennart87 » Di 10. Sep 2013, 17:33

Hallo,
ich habe folgendes Problem: Ich muss für meine Masterarbeit einen großen Datensatz bereinigen, ein Kreditportfolio mit ca. 320.000 Zeilen und je 7 Spalten.
Folgendes lässt mich gerade verzweifeln: Ich muss das Portfolio so bereinigen, dass jedem Schuldner (Enitity Number) genau eine Ausfallwahrscheinlichkeit (PD) zugeordnet wird. Das ist im Moment noch nicht der Fall (siehe Beispiel im sheet).
Um das Problem zu beseitigen, soll in den Fällen, in denen einem Schuldner mehrere Ausfallswahrscheinlichkeiten zugeordnet sind, ein neuer Schuldner (Fantasienummer) generiert und zugeordnet werden.
Ich habe eine for-Schleife mit if geschrieben, die sieht so aus (y ist der gesamte Datensatz als Dataframe)

Code: Alles auswählen
load("bearb3.Rda")

y[1:30,]

ID_new <- 1

for(k in 1:10){
  print(k)
  IDs <- unique(y$ID)
  for (i in IDs){
    if(!all(y[y$ID==i,]$PD==y[y$ID==i,]$PD[1])){
      for(j in which(y$ID==i&y$PD!=y[which(y$ID==i),]$PD[1])){
        levels(y$ID) <- c(levels(y$ID), ID_new)
        y$ID[j]<-ID_new
      }
      ID_new<-ID_new+1


Problem:R scheint nicht mit dem Code klarzukommen (wohl ineffizient programmiert und Schleife); mein PC (immerhin Quadcore mit 2,66 GHz) rechnet schon seit 15 Stunden.

Hat einer von euch eine Idee wie das effizient zu lösen wäre?
Dateianhänge
Unbenannt.png
Unbenannt.png (16.86 KiB) 1084-mal betrachtet
lennart87
 
Beiträge: 1
Registriert: Di 10. Sep 2013, 17:19
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Zurück zu Programmierkonzepte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron