Was ich versuche, ist ziemlich einfach zu tun. Allerdings bin ich neu bei R und habe nicht viel über Schleifen und Funktionen gelernt und bin mir nicht sicher, was die effizienteste Art ist, die Ergebnisse zu erhalten. Im Grunde möchte ich die Anzahl der Zeilen zählen, die meine Bedingungen erfüllen und eine Division machen. Hier ein Beispiel:Repeating Berechnung basierend auf Bedingungen
df1 <- data.frame(
Main = c(0.0089, -0.050667, -0.030379, 0.066484, 0.006439, -0.026076),
B = c(NA, 0.0345, -0.0683, -0.052774, 0.014661, -0.040537),
C = c(0.0181, 0, -0.056197, 0.040794, 0.03516, -0.022662),
D = c(-0.0127, -0.025995, -0.04293, 0.057816, 0.033458, -0.058382)
)
df1
# Main B C D
# 1 0.008900 NA 0.018100 -0.012700
# 2 -0.050667 0.034500 0.000000 -0.025995
# 3 -0.030379 -0.068300 -0.056197 -0.042930
# 4 0.066484 -0.052774 0.040794 0.057816
# 5 0.006439 0.014661 0.035160 0.033458
# 6 -0.026076 -0.040537 -0.022662 -0.058382
Meine Kriterien für den Zähler ist die Anzahl der B/C/D
zu zählen, die >0
ist, wenn Main
ist >0
; Für Nenner, zählen die Anzahl der B/C/D
die != 0
ist, wenn Main
!= 0
ist. Ich kann length(which(df1$Main >0 & df1$B>0))/length(which(df1$Main !=0 & df1$B !=0))
verwenden, um die Verhältnisse für jede Spalte einzeln zu erhalten. Aber meine Datensatz viele mehr Spalten hat, und ich frage mich, ob es eine Möglichkeit ist, dieses Verhältnis auf einmal zu bekommen, so dass mein Ergebnis aussehen wird:
# B C D
# 1 0.2 0.6 0.3