Ich habe drei Datenrahmen, denen ich beitreten möchte. Sie haben nicht die gleiche Länge und wie man zwei von ihnen verbindet wurde beantwortet here. Ich versuchte join_all
von plyr
von plyr
aber kein Kleid für den Erfolg zu verwenden, da es die 'x'
im Bereich von 2-7 von df.a
dauert und die x-Werte für 1 von df.b
überbrückt. Ich habe Mühe, die Antwort in der Dokumentation für join_all
zu finden.Verbinden Sie mehrere Datenrahmen mit join_all von plyr
MWE:
library(plyr)
df.a <- c(5, 4, 5, 7, 3, 5, 6, 5, 5, 4, 5, 5, 4, 5, 4, 7, 2, 4, 4, 5, 3, 6, 5, 6, 4, 4, 5, 4, 5, 5, 6, 7, 4)
df.b <- c(1, 3, 4, 6, 2, 7, 7, 4, 3, 6, 6, 3, 6, 6, 5, 6, 6, 5)
df.c <- c(3, 1, 3, 6, 6, 5, 7, 6, 6, 2, 7, 5, 1)
table(df.a)
count(df.a)
df.a.count <- count(df.a)
df.b.count <- count(df.b)
df.c.count <- count(df.c)
#normalize the data
df.a.count$freq <- sapply(df.a.count$freq, function(X) X/length(df.a))
df.b.count$freq <- sapply(df.b.count$freq, function(X) X/length(df.b))
df.c.count$freq <- sapply(df.c.count$freq, function(X) X/length(df.c))
#solution using merge
df.m <- merge(df.a.count, df.b.count, by ='x', all=TRUE)
df.m <- merge(df.m, df.c.count, by ='x', all=TRUE)[2:4]
names(df.m) <- c('freq.a', 'freq.b','freq.c')
#problem using join_all
dfs <- list(df.a.count, df.b.count, df.c.count)
df.all <- join_all(dfs, 'x')
Gebrauch verwenden können 'Reduce (function (...) fusionieren (..., by =" x ", all = TRUE), dfs)' – akrun
Soweit ich sehen kann, zeigt das markierte Duplikat nicht an, wie dies mit 'join_all' erreicht werden könnte. Als eine Schlussfolgerung ist es nicht für diese bestimmte Operation geeignet? – raumkundschafter
Ja, Sie haben Recht. Ich denke, es ist kein Betrüger dieser Frage und der Downvote auf meine Antwort ist nicht fair – akrun