【发布时间】:2013-02-19 15:09:51
【问题描述】:
首先,你好!这是我在这里的第一篇文章,我不得不承认我有点紧张
我有一个 data.frame,其中每个元素都是一式三份,并且有自己的值,这是一个示例
test <-data.frame (id = c("a", "a", "a" , "b", "b", "b"),
val = c(1,100,300,1,2,3))
我需要计算每个副本集中值之间的差异,如果第一个 val 与第二个或第二个与第三个之间的差异小于数字,则将其删除。
我尝试创建自己的小函数并将其与 ddply 一起使用,但到目前为止我没有成功
这是我想要做的:
f<-function(x) if(x[1,2]-x[2,2] < 60 || x[2,2]- x[3,2] < 60) NULL else (x)
ddply(test, .(id), f)
在这个例子中,我希望最后得到的是:
id val
a 1
a 100
a 300
“b”被删除是因为 (1-2
相反,我收到各种错误消息或奇怪的 data.frames,看起来完全错误
我希望我已经足够清楚了。
提前致谢
MP
编辑:差异是绝对值
【问题讨论】:
-
但是1-100不也是
-
是的,对不起,我的意思是绝对值
标签: r function if-statement dataframe plyr