我有三个数据框(a,b,c
)。
a
aa ab ac
1 2 5
2 3 6
3 4 7
b
aa ab ac
2 5 8
4 6 9
c
aa ab ac
5 4 6
7 1 8
我需要计算不同数据帧的相同列的中值。我听说过abind
,但是当我尝试将所有3个数据帧合并而没有任何中位数计算时。感谢您的任何建议。
答案 0 :(得分:3)
我们可以rbind
所有数据集,创建分组ID,并获取各个列的median
library(dplyr)
bind_rows(a, b, c, .id="group") %>%
group_by(group) %>%
summarise_each(funs(median))
如果我们不需要按'id'分组
bind_rows(a, b, c) %>%
summarise_each(funs(median))
或使用data.table
library(data.table)
rbindlist(list(a,b,c), idcol=TRUE)[,
lapply(.SD, function(x) median(as.numeric(x))) , by = .id]
答案 1 :(得分:1)
如果您试图单独获取数据框列的中位数,则必须执行
median(a$aa)
median(a$ab)
median(a$ac)
依此类推其他数据帧如果您想获得所有三个数据帧的中位数,请考虑以下因素:
big_df = cbind(a,b,c)
median(big_df$aa)
median(big_df$ab)
median(big_df$ac)
答案 2 :(得分:0)
对于你可以做的中位数
running tests ... < ---- (not actually running)
fetching file from server ...
flashing the file to the hardware ...
对于大桌子,请参阅其他答案中的approches。