2017-10-27 2 views
0

Ich möchte Zeilen, die zwei Spalten dieser Zeile erfüllt zwei Bedingungen auswählen. Und die zweite Bedingung ist in der ersten Bedingung verschachtelt. Zum Beispiel geben Sie mir folgende Codes genau das, was ichFilter konditioniert auf mehrere Spalten geschachtelt

library(tidyverse) 
df1 <- data.frame(group1 = c(rep("A",3),rep("B",3)), 
        group2 = rep(c(1:3),2), 
        value = 1:6) 
df1 
selection <- data.frame(G1=c("A","B"),G2=c(2,1)) 
selection 
left_join(selection,df1,by=c("G1"="group1","G2"="group2")) 

I verwendet left_join() Funktion hier tun wollen. Ich frage mich, ob ich Funktionen wie filter() verwenden kann? So wie wir es normalerweise tun, wenn wir Reihen wählen. Das würde mir Zeit sparen, den Variablennamen wieder zu ändern.

+1

Dies scheint vorzuziehen jeden Code, den Sie kommen konnte mit mit 'filter' Einige quälende Filter ((G1 =" A "& G2 = 2) | ...' würden funktionieren, wären aber ziemlich mühsam zu warten. – thelatemail

Antwort

1

Wenn Sie Spaltennamen behalten wollen aus df1, können Sie df1 mit selection wechseln, dann verwenden inner_join oder right_join:

inner_join(df1,selection,by=c("group1"="G1","group2"="G2")) 

# group1 group2 value 
#1  A  2  2 
#2  B  1  4 

right_join(df1,selection,by=c("group1"="G1","group2"="G2")) 

# group1 group2 value 
#1  A  2  2 
#2  B  1  4 
Verwandte Themen