gpt4 book ai didi

r - 学习理解plyr、ddply

转载 作者:行者123 更新时间:2023-12-03 11:48:11 26 4
gpt4 key购买 nike

我一直试图通过尝试不同的变量和函数并查看结果来了解 plyr 是什么以及如何工作。所以我更多的是在寻找 plyr 如何工作的解释,而不是具体的修复它的答案。我已经阅读了文档,但我的新手大脑仍然没有得到它。

一些数据和名称:

mydf<- data.frame(c("a","a","b","b","c","c"),c("e","e","e","e","e","e")
,c(1,2,3,10,20,30),
c(5,10,20,20,15,10))
colnames(mydf)<-c("Model", "Class","Length", "Speed")
mydf

问题 1:总结与转换语法

所以如果我输入: ddply(mydf, .(Model), summarise, sum = Length+Length)
我得到:
`Model ..1
1 a 2
2 a 4
3 b 6
4 b 20
5 c 40
6 c 60

如果我输入: ddply(mydf, .(Model), summarise, Length+Length)我得到相同的结果。

现在如果使用转换: ddply(mydf, .(Model), transform, sum = (Length+Length))
我得到:
  Model Class Length Speed sum
1 a e 1 5 2
2 a e 2 10 4
3 b e 3 20 6
4 b e 10 20 20
5 c e 20 15 40
6 c e 30 10 60

但是,如果我像第一个总结一样陈述它:
ddply(mydf, .(Model), transform, (Length+Length))
  Model Class Length Speed
1 a e 1 5
2 a e 2 10
3 b e 3 20
4 b e 10 20
5 c e 20 15
6 c e 30 10

那么为什么添加“sum =”会有所不同呢?

问题 2:为什么这些不起作用?
ddply(mydf, .(Model), sum, Length+Length) #函数 (i) 中的错误:找不到对象“长度”
ddply(mydf, .(Model), length, mydf$Length) #Error in .fun(piece, ...) : 

传递给“长度”的 2 个参数需要 1

这些示例更多地表明我从根本上不了解如何使用plyr。

任何 anwsers 或解释表示赞赏。

最佳答案

语法是:

ddply(data.frame, variable(s), function, optional arguments)

该函数预计返回 data.frame .在你的情况下,
  • 总结是一个函数,它将透明地创建一个新的 data.frame,您提供的表达式的结果作为进一步的参数 (...)
  • 转换,一个基本的 R 函数,将转换 data.frames(首先由变量分割),根据您提供的表达式添加新列作为进一步的参数。这些需要命名,这就是转换的工作方式。

  • 如果您使用subset、transform、mutate、with、inside 或summarise 以外的其他函数,您需要确保它们返回一个data.frame(长度和总和不是),或者至少是一个适当的向量输出的长度。

    关于r - 学习理解plyr、ddply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370323/

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