gpt4 book ai didi

r - 如何在每列中获得均值?

转载 作者:行者123 更新时间:2023-12-03 18:19:34 25 4
gpt4 key购买 nike

我有一个像这样的大数据框:

ID  c_Al   c_D    c_Hy      occ
A 0 0 0 2306
B 0 0 0 3031
C 0 0 1 2581
D 0 0 1 1917
E 0 0 1 2708
F 0 1 0 2751
G 0 1 0 1522
H 0 1 0 657
I 0 1 1 469
J 0 1 1 2629
L 1 0 0 793
L 1 0 0 793
M 1 0 0 564
N 1 0 1 2617
O 1 0 1 1167
P 1 0 1 389
Q 1 0 1 294
R 1 1 0 1686
S 1 1 0 992

如何在每列中获得均值?
               0        1
c_Al 1506.2 1641.2
c_D 748.6 1467.5
c_Hy 1506.2 1641.2

我试过 aggregate(occ~c_Al, mean, data=table2) ,但必须多次执行; ddply具有相同的结果,或 for(i in 1:dim(table2)[1]){ aggregate(occ~[,i], mean, data=table2)} ,但它不能工作。

最佳答案

我只会使用 meltdcast从“ reshape 2”:

library(reshape2)
dfL <- melt(table2, id.vars = c("ID", "occ"))
dcast(dfL, variable ~ value, value.var = "occ", fun.aggregate = mean)
# variable 0 1
# 1 c_Al 2057.100 1032.778
# 2 c_D 1596.667 1529.429
# 3 c_Hy 1509.500 1641.222

当然,base R 也可以很好地处理这个问题。

在这里,我使用了 tapplyvapply :
vapply(table2[2:4], function(x) tapply(table2$occ, x, mean), numeric(2L))
# c_Al c_D c_Hy
# 0 2057.100 1596.667 1509.500
# 1 1032.778 1529.429 1641.222
t(vapply(table2[2:4], function(x) tapply(table2$occ, x, mean), numeric(2L)))
# 0 1
# c_Al 2057.100 1032.778
# c_D 1596.667 1529.429
# c_Hy 1509.500 1641.222

关于r - 如何在每列中获得均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24787647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com