2017-05-25 2 views
0

Varianten dieser Frage wurden viel gefragt, ich lese auch über NSE. Noch kann ich das nicht herausfinden.passender Spaltenname als Variable in dplyr

Dies ist einfach:

library(dplyr) 
data(cars) 

cars %>% 
    group_by(speed) %>% 
    summarise(d = mean(dist)) 

Jetzt habe ich Variable x passieren die dist Spalte bedeuten

x <- "dist"

Natürlich verwenden möchten dies nicht funktioniert:

cars %>% 
    group_by(speed) %>% 
    summarise(d = mean(x)) 

So verwende ich SE-Version von summieren:

cars %>% 
    group_by(speed) %>% 
    summarise_(d = mean(x)) 

Ok, nicht funktioniert, so dass ich ~ hinzuzufügen auch:

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(x)) 

immer noch nicht funktioniert, aber wenn Gebrauch dist statt x:

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(dist)) 

Dies funktioniert , aber nicht x.

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(~x)) 

Dies funktioniert auch nicht.

Ich moniere im Grunde herum ohne irgendeine Idee, wie man das funktioniert, oder warum es scheitert.

Antwort

2
cars %>% 
    group_by(speed) %>% 
    summarise_each_(funs(mean), vars(matches(x))) 
+0

Vielen Dank! Mein Problem ist, etwas mehr wie dieses zu tun 'Autos%>% group_by (Geschwindigkeit)%>% summarise_ (d = ~ Quantil (dist, c (0.95), na.rm = T) [1])' Do hast du auch eine lösung dafür? – juwi

+1

Ich neige dazu, zuerst eine Funktion mit dem Argument zu definieren, z.B. 'Quantile <- Funktion (x) Quantil (x, .95, na.rm = T)'. Auf diese Weise kann der 'summarise_each' trotzdem entsprechend laufen:' cars%>% group_by (speed)%>% summarise_each_ (Spaß (Quantiles), Vars (Matches ("Dist"))) ' –

Verwandte Themen