Ich würde gerne dplyr verwenden, um eine Tabelle nach einer Spalte zu gruppieren, dann wenden Sie eine Funktion auf die Menge der Werte in der zweiten Spalte jeder Gruppe an.dplyr: Wie man do() auf das Ergebnis von group_by anwendet?
Zum Beispiel möchte ich im folgenden Codebeispiel alle 2-Punkte-Kombinationen von Lebensmitteln, die von jeder Person gegessen werden, zurückgeben. Ich kann nicht herausfinden, wie man die Funktion richtig mit der richtigen Spalte (Nahrungsmittel) in der do()
Funktion versorgt.
library(dplyr)
person = c('Grace', 'Grace', 'Grace', 'Rob', 'Rob', 'Rob')
foods = c('apple', 'banana', 'cucumber', 'spaghetti', 'cucumber', 'banana')
eaten = data.frame(person, foods)
by_person = group_by(eaten, person)
# How to do this?
do(by_person, combn(x = foods, m = 2))
Beachten Sie, dass das Codebeispiel in ?do
auf meinem Rechner nicht
mods <- do(carriers, failwith(NULL, lm), formula = ArrDelay ~ date)
In einer zukünftigen Version von dplyr können Sie etwas mehr tun, wie 'do (combn (. $ Foods, m = 2))' 'und die Komponenten werden automatisch mit nützlichen Namen. – hadley
Vielen Dank für die hilfreiche Lösung! Kleiner Tippfehler in stringsAsFactors in der ersten Zeile. – zimmeee
stellte diesmal eine neue ein :) – zimmeee