Identifizierung der Variablen mit dem höchsten Wert

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

Moderatoren: EDi, jogo

bigben
Beiträge: 676
Registriert: Mi Okt 12, 2016 9:09 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von bigben » Mi Sep 05, 2018 12:32 pm

jogo hat geschrieben:
Mi Sep 05, 2018 8:39 am
Das ist aber immer noch 1000-mal besser als der Einsatz der Funktion, die hier im Forum nicht genannt werden darf.

Code: Alles auswählen

for(i in 1:1e6) attach(what=NULL)
:o :mrgreen:
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

jogo
Beiträge: 933
Registriert: Fr Okt 07, 2016 8:25 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von jogo » Mi Sep 05, 2018 1:19 pm

Inzwischen gibt es wenigsten einen treffenden Spruch bei den fortunes:

Code: Alles auswählen

library("fortunes"); fortune(379)
> fortune(379)
The problem with attach is what it does, not how it does it. If you do the same thing attach does any other way, you've managed to
create all the problems of attach without using attach. If I tell you chopping your finger off with a knife is bad, your question
shouldn't be "Okay, knives are bad. How do I chop my finger off without a knife? Can I use scissors or is there a better way?"
-- Gregor (about alternatives to attach())
stackoverflow.com (May 2016)

bigben
Beiträge: 676
Registriert: Mi Okt 12, 2016 9:09 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von bigben » Mi Sep 05, 2018 1:31 pm

Den find ich nett.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Benutzeravatar
EDi
Beiträge: 634
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von EDi » Mi Sep 05, 2018 10:07 pm

Den find ich nett.

Code: Alles auswählen

update.packages(ask=FALSE,checkBuilt=TRUE) 
:?:
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.

jogo
Beiträge: 933
Registriert: Fr Okt 07, 2016 8:25 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von jogo » Do Sep 06, 2018 2:59 pm

EDi hat geschrieben:
Mi Sep 05, 2018 10:07 pm
Den find ich nett.

Code: Alles auswählen

update.packages(ask=FALSE,checkBuilt=TRUE) 
:?:
ich vermute, Bernhard hatte "nett" wirklich in hochsprachlichem Deutsch gemeint im Sinne von niedlich/hübsch (in diesem Fall sogar von amüsant) und nicht als mundartliche Form von nicht. ;)

bigben
Beiträge: 676
Registriert: Mi Okt 12, 2016 9:09 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von bigben » Do Sep 06, 2018 3:09 pm

Stimmt, ich hatte die hochsprachliche Bedeutung gemeint und verstehe EDis Hilfe erst jetzt. "Amüsant" wäre rückblickend besser gewesen.

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

Benutzeravatar
EDi
Beiträge: 634
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von EDi » Do Sep 06, 2018 10:12 pm

ich vermute, Bernhard hatte "nett" wirklich in hochsprachlichem Deutsch gemeint im Sinne von niedlich/hübsch (in diesem Fall sogar von amüsant) und nicht als mundartliche Form von nicht.
Ups, war wohl zu spät gestern :oops: . Ein Update kann trotzdem nicht schaden... ;)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.

NeugierundOrga
Beiträge: 16
Registriert: Mo Aug 27, 2018 11:16 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von NeugierundOrga » Do Okt 04, 2018 10:25 am

Hallo Jörg,

ich muss noch mal auf meine Formel zurückkommen, ich habe einen Denkfehler gemacht und die Berechnung ist leder falsch. Kannst Du bitte noch mal mit reindenken, wie die Formel für die korrigierte Andwendung aussehen muss?

Der relevante Ausschnitt der zu verwendenden Daten ist im Anhang zu sehen.
Die Variablen OCAI (A-D) und idOCAI (A-D) liegen numerisch vor, domCul sind Faktoren.

Dies hier war die funktionierende Formel, leider war "ziehe von jedem ermittelten Wert immer u_domCulstr ab" falsch.

Code: Alles auswählen

Dataframe$POfitstr <- NA
Dataframe$POfitstr <- with(Dataframe, {
  i <- u_domCul.faktor == "Familie";    POfitstr[i] <- u_idOCAIA[i]
  i <- u_domCul.faktor == "Adhocratie"; POfitstr[i] <- u_idOCAIB[i]
  i <- u_domCul.faktor == "Markt";      POfitstr[i] <- u_idOCAIC[i]
  i <- u_domCul.faktor == "Hierarchie"; POfitstr[i] <- u_idOCAID[i]
  POfitstr - u_domCulstr
})
Richtig ist aber: bei "Familie" idOCAIA minus OCAIA, bei Adhocratie idOCAIB - OCAIB, usw.
Ich habe versucht, das selbst in zwei Schritten zu lösen, erst als Vorbereitung den für die Voraussetzung A, B, C oder D passenden Wert OCAI in eine separate Variable zu ziehen und dann wieder mit der Voraussetzung A, B, C oder D die entsprechende Differenz zu bilden. Bereits beim ersten Schritt bekomme ich eine Fehlermeldung:

Code: Alles auswählen

Tabelle.OCAI$POfitvor<- NA
Tabelle.OCAI$POfitvor <- with(Tabelle.OCAI, {
  i <- domCul == "A"; POfitvor[i] <- OCAIA[i]
  i <- domCul == "B"; POfitvor[i] <- OCAIB[i]
  i <- domCul == "C"; POfitvor[i] <- OCAIC[i]
  i <- domCul == "D"; POfitvor[i] <- OCAID[i]
})
Error in `$<-.data.frame`(`*tmp*`, POfitvor, value = c(43.0555555555556,  : 
  replacement has 90 rows, data has 258
Ich bin ratlos, welchen 90 Daten da gemeint sein sollen, diese Summe passt zu keiner der vier Untergruppen A-D.

Den zweiten Schritt hatte ich mir dann so gedacht:

Code: Alles auswählen

Tabelle.OCAI$POfitstr<- NA
Tabelle.OCAI$POfitstr <- with(Tabelle.OCAI, {
  i <- domCul == "A"; POfitstr[i] <- (idOCAIA[i]-POfitvor[i])
  i <- domCul == "B"; POfitstr[i] <- (idOCAIB[i]-POfitvor[i])
  i <- domCul == "C"; POfitstr[i] <- (idOCAIC[i]-POfitvor[i])
  i <- domCul == "D"; POfitstr[i] <- (idOCAID[i]-POfitvor[i])
})
Was meinst Du dazu?


ALTERNATIVE
Weil das alles so ein Elend ist, hat mein Prof schon zugestimmt, dass ich das einfach in excel berechne, was ganz fix geht, nur leider bekomme ich die Tabelle nicht mehr "heile" in R zurück. Die Zahlenwerte in POfitstr sind entweder ergänzt um leere Felder (nicht überall kann die Differenz berechnet werden aufgrund fehlenden Werte) oder ich habe überall NA reingeschrieben. Beim Importieren (über import dataset im workspace) wird die Variable zu einem Faktor oder auch Character, je nachdem ob mit Leerstellen oder NA. Ich habe auch versucht, eine reine Excel-Datei nur bestehend aus der neu berechneten Variable einzulesen, dann bekomme ich das als data.frame in R...
Wenn es einfacher ist, dieses Problem zu beheben, gehe ich auch sehr gern diesen Weg!!!

Lieben Dank!
Karen
ScreenHunter_487 Oct. 04 09.44.jpg

jogo
Beiträge: 933
Registriert: Fr Okt 07, 2016 8:25 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von jogo » Do Okt 04, 2018 11:42 am

Hallo Karen
NeugierundOrga hat geschrieben:
Do Okt 04, 2018 10:25 am
Bereits beim ersten Schritt bekomme ich eine Fehlermeldung:

Code: Alles auswählen

Tabelle.OCAI$POfitvor<- NA
Tabelle.OCAI$POfitvor <- with(Tabelle.OCAI, {
  i <- domCul == "A"; POfitvor[i] <- OCAIA[i]
  i <- domCul == "B"; POfitvor[i] <- OCAIB[i]
  i <- domCul == "C"; POfitvor[i] <- OCAIC[i]
  i <- domCul == "D"; POfitvor[i] <- OCAID[i]
})
Error in `$<-.data.frame`(`*tmp*`, POfitvor, value = c(43.0555555555556,  : 
  replacement has 90 rows, data has 258
Ich bin ratlos, welchen 90 Daten da gemeint sein sollen, diese Summe passt zu keiner der vier Untergruppen A-D.
zu dieser Fehlermeldung kommt es üblicherweise, weil man zwei Sachen nicht gut gemacht hat:
1. Man hat zuviele Objekte im Workspace erzeugt - die liegen dort jetzt in einem unübersichtlichen Haufen rum. Besser wäre gewesen, man hätte die Vektoren in den passenden Dataframes erzeugt.
2. Man hat die Groß-/Kleinschreibung nicht beachtet.
Bitte zeige doch mal das Ergebnis von

Code: Alles auswählen

str(Tabelle.OCAI)
genau vor der Zeile Tabelle.OCAI$POfitvor<- NA und eventuell noch das Ergebnis von Gruß, Jörg

NeugierundOrga
Beiträge: 16
Registriert: Mo Aug 27, 2018 11:16 am

Re: Identifizierung der Variablen mit dem höchsten Wert

Beitrag von NeugierundOrga » Do Okt 04, 2018 2:41 pm

Hallo Jörg,

hier die Tabelle.OCAI:

Code: Alles auswählen

> str(Tabelle.OCAI)
'data.frame':	258 obs. of  33 variables:
 $ Sex               : int  1 1 1 1 1 2 1 1 1 2 ...
 $ Sex.faktor        : Factor w/ 2 levels "weiblich","männlich": 1 1 1 1 1 2 1 1 1 2 ...
 $ Age               : int  23 25 36 50 47 65 36 44 44 58 ...
 $ JobDur            : num  5 5 6 9 1 28 6 3 5 3 ...
 $ JobDet            : int  2 8 6 8 7 1 6 6 8 1 ...
 $ JobDet.faktor     : Factor w/ 8 levels "Forsch./Entw.",..: 2 8 6 8 7 1 6 6 8 1 ...
 $ JobHier           : int  4 4 4 3 1 3 4 4 3 2 ...
 $ JobHier.faktor    : Factor w/ 4 levels "Topmanagement",..: 4 4 4 3 1 3 4 4 3 2 ...
 $ OrgAge            : num  1911 2004 1990 1998 2015 ...
 $ OrgAge_real       : num  107 14 28 20 3 49 28 54 49 49 ...
 $ OrgSize           : int  380 15 150 900 10 500 150 20 500 500 ...
 $ OrgSize_cat       : num  4 2 3 4 2 4 3 2 4 4 ...
 $ OrgSize_cat.faktor: Factor w/ 4 levels "kleinst","klein",..: 4 2 3 4 2 4 3 2 4 4 ...
 $ CE                : num  3.2 3.1 2.7 3.3 3.4 3 2.5 3.2 2.8 3.1 ...
 $ CEdiv             : num  3.4 3.2 3.2 3.4 3.8 3 2.8 3.8 3.2 3.6 ...
 $ CEspec            : num  3 3 2.2 3.2 3 3 2.2 2.6 2.4 2.6 ...
 $ CEI               : num  3.1 3.4 1.8 3 4.6 3 2.2 3.6 3.1 4.1 ...
 $ CEIembrace        : num  2.8 3.2 1.2 2.4 4.2 2.8 1.6 3.6 3 4 ...
 $ CEIstretch        : num  3.4 3.6 2.4 3.6 5 3.2 2.8 3.6 3.2 4.2 ...
 $ WORCS             : num  5.9 5 4 6.4 6.8 4.5 4 5.4 5.1 4.8 ...
 $ OCAIA             : num  7.78 17.5 10 25 24.17 ...
 $ OCAIB             : num  25.8 10.8 10.8 14.3 30 ...
 $ OCAIC             : num  53.6 28.6 53.1 35 22.2 ...
 $ OCAID             : num  12.8 43.1 26.1 27.5 23.6 ...
 $ idOCAIA           : num  26.9 24.7 NaN 40.3 23.9 ...
 $ idOCAIB           : num  28.3 24.7 NaN 21.9 36.1 ...
 $ idOCAIC           : num  24.7 31.3 NaN 13.6 22.2 ...
 $ idOCAID           : num  20 19.2 NaN 24.2 17.8 ...
 $ domCul            : Factor w/ 4 levels "A","B","C","D": 3 4 3 3 2 3 3 3 3 3 ...
 $ domCul.faktor     : Factor w/ 4 levels "Familie","Adhocratie",..: 3 4 3 3 2 3 3 3 3 3 ...
 $ domCulstr         : num  27.78 14.44 26.94 7.5 5.83 ...
 $ domCulcat         : num  3 3 3 2 2 2 3 1 3 3 ...
 $ domCulcat.faktor  : Factor w/ 3 levels "neutral","dominant",..: 3 3 3 2 2 2 3 1 3 3 ...
 
und ls()

Code: Alles auswählen

> ls()
 [1] "Age.num"             "Auswahl.OCAI"        "CE"                  "CEdiv"               "CEI"                
 [6] "CEIembrace"          "CEIstretch"          "CEspec"              "domCulstr"           "idOCAIA"            
[11] "idOCAIB"             "idOCAIC"             "idOCAID"             "JobDet.faktor"       "JobDet.num"         
[16] "JobDur"              "JobHier.faktor"      "JobHier.num"         "Neugier_Kultur"      "OCAIA"              
[21] "OCAIB"               "OCAIC"               "OCAID"               "OrgAge"              "OrgAge_real"        
[26] "OrgSize"             "OrgSize.num"         "OrgSize_cat"         "OrgSize_cat.faktor"  "Sex.faktor"         
[31] "Sex.num"             "Tabelle.Gesamt"      "Tabelle.Gesamt.num"  "Tabelle.Neugier"     "Tabelle.Neugier.num"
[36] "Tabelle.OCAI"        "WORCS"              
Ich hatte gerade den woorkspace komplett gelöscht, die Grundtabelle meiner Daten neu importiert und alle Variablen und Arbeitstabellen, die bis zu diesem Schritt angelegt sind, neu erstellt. Die Fehlermeldung nach dem Anlegen der Variable POfitvor und dem Ausführen der ersten Formel bleibt gleich:

Code: Alles auswählen

$ POfitvor          : logi  NA NA NA NA NA NA ...

> Tabelle.OCAI$POfitvor <- with(Tabelle.OCAI, {
+   i <- domCul == "A"; POfitvor[i] <- OCAIA[i]
+   i <- domCul == "B"; POfitvor[i] <- OCAIB[i]
+   i <- domCul == "C"; POfitvor[i] <- OCAIC[i]
+   i <- domCul == "D"; POfitvor[i] <- OCAID[i]
+ })
Error in `$<-.data.frame`(`*tmp*`, POfitvor, value = c(43.0555555555556,  : 
  replacement has 90 rows, data has 258
  
Gruß
Karen

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast