-1
我有三個我想加入的數據幀。他們沒有相同的長度,以及如何加入他們其中兩人的回答是here。 我試圖使用join_all
從plyr
,但沒有成功的服裝,因爲它需要'x'
範圍從df.a
2-7,並從df.b
繞過x值爲1。我很難在join_all
的文檔中找到答案。使用來自plyr的join_all加入多個數據幀
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')
使用使用
Reduce
與merge
'減少(函數(...)合併(...,通過=「 x「,all = TRUE),dfs)' – akrun據我所見,標記的重複並不表示如何使用join_all來實現。作爲一個結論,它不適合這種特定的操作? – raumkundschafter
是的,你是對的。我認爲這不是一個愚蠢的問題,對我的回答的低估是不公平的 – akrun