gpt4 book ai didi

r - ddply() 似乎没有在我的数据框中进行子集化

转载 作者:行者123 更新时间:2023-12-02 04:54:41 29 4
gpt4 key购买 nike

我试图在我的数据集的子集中获取汇总统计信息,自然而然地转向了 plyr 包,因为我正在使用数据框 ddply()。我不明白为什么这不起作用....

t <- as.data.frame(cbind(1, seq(1:20)))
t2 <- as.data.frame(cbind(2, seq(21:40)))
t <- rbind(t, t2)
rm(t2)
is.data.frame(t)
[1] TRUE
ddply(t, .(V1), function(x) c(missing = sum(is.na(t$V2)),
n = sum(!is.na(t$V2)),
mean = mean(t$V2, na.rm = TRUE),
sd = sd(t$V2, na.rm = TRUE)))
V1 missing n mean sd
1 1 0 40 10.5 5.83974
2 2 0 40 10.5 5.83974

我读过一些像 this quick overview 这样的东西Stackoverflow 上的一些线程搜索并发现了类似的问题,并认为我做对了,但显然不是。任何关于我做错或误解的见解都将不胜感激。

提前致谢

松绳

最佳答案

我看到了几个问题。首先,不要将 seq 与冒号运算符结合使用。单独使用冒号可以获得所需的序列:

1:20
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21:40
# [1] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

如果您同时使用两者,seq 将根据您传递给它的序列给您一个序列:

seq(21:40)
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

其次,t 是您的整个数据集。你想对 x 进行操作,V1 定义的子集:

ddply(t, .(V1), function(x) c(missing = sum(is.na(x$V2)),
n = sum(!is.na(x$V2)),
mean = mean(x$V2, na.rm = TRUE),
sd = sd(x$V2, na.rm = TRUE)))

关于r - ddply() 似乎没有在我的数据框中进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213027/

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