GOOGLE ADS

Dienstag, 12. April 2022

Berechnen Sie den Z-Score aus einem anderen Datenrahmen, wenn Sie die Bedingungen in R erfüllen

Ich habe zwei Datenrahmen:

Node1<-c(1, 2, 3, 4, 5, 6, 7)
Node1<-c(1, 1, 1, 2, 2, 3)
Node2<-c(2, 3, 4, 3, 4, 4)
Mean<-c(2, 1, 5, 3, 2, 3)
SD<-c(0.1, 0.2, 0.01, 0.2, 0.01, 0.01)
df1<-data.frame(Node1, Node2, Mean, SD)
df1
Node1 Node2 Mean SD
1 1 2 2 0.10
2 1 3 1 0.20
3 1 4 5 0.01
4 2 3 3 0.20
5 2 4 2 0.01
6 3 4 3 0.01
df2<-data.frame(Node1, Node2, value)
df2
Node1 Node2 value
1 1 2 1
2 1 3 2
3 1 4 1
4 2 3 4
5 2 4 6
6 3 4 7

Für jede "Wert"-Zeile in df2 möchte ich den Z-Score berechnen, indem ich den Mittelwert und die Standardabweichung (SD) aus dem entsprechenden Knotenpaar (dh Knoten1 und Knoten2) von df1 als Referenzwerte verwende. Beispielsweise sollte für die erste Zeile von df2 der z-Score ((1-2)/0,10) sein, da der entsprechende Mittelwert und die Standardabweichung durch Abgleichen der Werte von Node1 und Node2 aus beiden dfs abgeleitet werden.

Wie mache ich das in R? Meine aktuellen Lösungen verwenden left_join, um df1 und df2 zu kombinieren, verwenden dann mutateund case_when, aber ich kann nicht darüber hinausgehen, um die Z-Scores zu extrahieren, während bestimmte Bedingungen beibehalten werden (dh tun, während die Werte von Node1 und Node2 aus beiden dfs übereinstimmen).


Lösung des Problems

Ich denke, Sie können einfach tun:

left_join(df1, df2, by = c('Node1', 'Node2')) %>%
mutate(z_score = (Mean - value) / SD)
#> Node1 Node2 Mean SD value z_score
#> 1 1 2 2 0.10 1 10
#> 2 1 3 1 0.20 2 -5
#> 3 1 4 5 0.01 1 400
#> 4 2 3 3 0.20 4 -5
#> 5 2 4 2 0.01 6 -400
#> 6 3 4 3 0.01 7 -400

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...