paradoxbirdy 如何在具有相同行名(ID)的数据中挑选某一个字段的最小值形成新表。(不借助sql语言) [data] ID A B C 1 7 8 3 1 6 0 3 2 1 NA 9 2 3 4 0 2 5 3 2 [/data] 如上数据,如何选择每个ID下C字段的最小值组成新表,如果C字段一样大,就选择此ID下的第一个观测。形成下表。 [data] ID A B C 1 7 8 3 2 3 4 0 [/data] 先谢过![s:14]
justin_M 回复 第1楼 的 paradoxbirdy: 这样? <br /> x <- read.table("clipboard",head=TRUE)<br /> by(data=x,INDICES=x$ID,FUN=function(y) y[which(y$C==min(y$C))[1],])<br /> </p>
suckbunny 回复 第3楼 的 paradoxbirdy:<br /> z=by(data=x,INDICES=x$ID,FUN=function(y) y[which(y$C==min(y$C))[1],])<br /> do.call(rbind,z)<br /> </p>
Robert_Hoo <br /> x <- x[order(x$ID, x$C), ]<br /> x[!duplicated(x$ID), ]</p> <p> ID A B C<br /> 1 1 7 8 3<br /> 4 2 3 4 0</p> <p> </p>
paradoxbirdy 回复 第4楼 的 suckbunny:请问如何寻找解决问题的有效方法,总是上论坛求教也不好意思,不知朋友有没有好的建议?有很多方法我根本就不知道其的存在,这种情况该怎么办呢?[s:15]
suckbunny 回复 第8楼 的 paradoxbirdy:这个先自己看几本R的基础教程,一定要自己动手实现。并且问自己有没有别的方法。其次对于遇到的函数一定多看帮助文档,并且自己试验每个参数的实际效果。最后多逛论坛,学习别人的技巧,举一反三。