ich habe einen dataframe mit folgendem Format:
Code: Alles auswählen
Proband V1 V2
1 A 3
1 B 6
1 C 8
2 A 4
2 B 5
2 C 5
3 A 7
3 B 1
3 C 9
Grüße
Frida
Code: Alles auswählen
Proband V1 V2
1 A 3
1 B 6
1 C 8
2 A 4
2 B 5
2 C 5
3 A 7
3 B 1
3 C 9
Code: Alles auswählen
df <- read.table(header=TRUE, stringsAsFactors = FALSE, text=
"Proband V1 V2
1 A 3
1 B 6
1 C 8
2 A 4
2 B 5
2 C 5
3 A 7
3 B 1
3 C 9")
df$n <- ave(df$V2, df$Proband, df$V2, FUN=length)
subset(df, n>=2)
Code: Alles auswählen
df[ave(df$V2, df$Proband, df$V2, FUN=length)>=2,]
Code: Alles auswählen
library("data.table")
Text=
"Proband V1 V2
1 A 3
1 B 6
1 C 8
2 A 4
2 B 5
2 C 5
3 A 7
3 B 1
3 C 9"
df <- fread(input=gsub("\t+", "\t", Text))
df[, n :=.N, .(Proband, V2)][n>=2]
was meinst Du damit?FridaKoriander hat geschrieben: ↑Mo Jun 11, 2018 1:59 pm vielen Dank für Deine Antwort! Hm, leider funktioniert das bei meinen Daten nicht so recht.
Ich habe doch die ranges bei meiner Lösung gar nicht verwendet.V1 hat eine Range von 2-15 und V2 eine Range von 1-9...gibt es die Möglichkeit, das über eine if-Schleife zu lösen...?
siehe auch: http://www.if-schleife.de/FridaKoriander hat geschrieben: ↑Mo Jun 11, 2018 1:59 pmgibt es die Möglichkeit, das über eine if-Schleife zu lösen...?
Code: Alles auswählen
for (i in 1:5) print(i)
'for'(i, 1:5, print(i))
i <- 42
if (i==9) print("neun") else print("anders")
'if'(i==9, print("neun"), print("anders"))
Code: Alles auswählen
'+'(3, 4)
'<-'(x, 11:15)
'['(x, 3)
Selbst wenn beides eine Funktion ist, dann ist das eine doch eine Schleife und das andere nicht.
Wenn man das konsequent so macht, nennt man das wohl LISP - und dass ist auch schon ein halbes Jahrhundert lang nicht tot zu kriegen. Unter dem aktuellen Namen Clojure steht das bei Redmonk ziemlich weit rechts oben (und Racket, Emacs Lisp, Common Lisp und Scheme stehen auch alle mit auf der Liste): http://sogrady-media.redmonk.com/sograd ... k_.118.png Ist so abwegig also nicht.Das sieht bestimmt lustig aus, wenn man konsequent den Programmierstil entsprechend umsetzt:Code: Alles auswählen
'+'(3, 4) '<-'(x, 11:15) '['(x, 3)
Code: Alles auswählen
'<-'(x, ':'(11, 15))
Das ist wohl war; ich wollte mal wieder der allgemeineren Idee nachhängen.
ja, ich war noch nicht ganz konsequent - auch die anderen Beispiele müssen nochmal überarbeitet werden:Wenn man das konsequent so macht, nennt man das wohl LISP - und dass ist auch schon ein halbes Jahrhundert lang nicht tot zu kriegen. Unter dem aktuellen Namen Clojure steht das bei Redmonk ziemlich weit rechts oben (und Racket, Emacs Lisp, Common Lisp und Scheme stehen auch alle mit auf der Liste): http://sogrady-media.redmonk.com/sograd ... k_.118.png Ist so abwegig also nicht.Das sieht bestimmt lustig aus, wenn man konsequent den Programmierstil entsprechend umsetzt:Code: Alles auswählen
'+'(3, 4) '<-'(x, 11:15) '['(x, 3)
https://imgs.xkcd.com/comics/lisp_cycles.png
A propos: Wenn wir schon praefix-Syntax wählen, dann müsstest Du aber konsequenterweise so schreiben:Code: Alles auswählen
'<-'(x, ':'(11, 15))
Code: Alles auswählen
for (i in 1:5) print(i)
'for'(i, 1:5, print(i))
'for'(i, ':'(1, 5), print(i))
i <- 42
if (i==9) print("neun") else print("anders")
'if'(i==9, print("neun"), print("anders"))
'if'('=='(i, 9), print("neun"), print("anders"))