8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

通过选择每组一行来折叠数据框

chaos 2月前

105 0

我试图通过从特定列中具有相同值的每组行中删除一行以外的所有行来折叠数据框。换句话说,就是每组的第一行。例如,我...

我试图通过从特定列中具有相同值的每组行中删除一行以外的所有行来折叠数据框。换句话说,就是每组的第一行。

例如,我想转换这个

> d = data.frame(x=c(1,1,2,4),y=c(10,11,12,13),z=c(20,19,18,17))
> d
  x  y  z
1 1 10 20
2 1 11 19
3 2 12 18
4 4 13 17

变成这样:

    x  y  z
1   1 11 19
2   2 12 18
3   4 13 17

我目前正在使用聚合来执行此操作,但是当数据较多时,性能是不可接受的:

> d.ordered = d[order(-d$y),]
> aggregate(d.ordered,by=list(key=d.ordered$x),FUN=function(x){x[1]})

我已尝试使用与此处相同的函数参数进行 split/unsplit,但 unsplit 会抱怨行号重复。

rle 有可能吗?是否有一个 R 习语可以将 rle 的长度向量转换为每次运行开始的行的索引,然后我可以使用该习语从数据框中抽出这些行?

帖子版权声明 1、本帖标题:通过选择每组一行来折叠数据框
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由chaos在本站《loops》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 嗨,Ian——不幸的是,James 从来没有真正明确地说明他想要的是第一个还是最后一个,并且在帖子中自相矛盾……但是你关于 fromLast 的提示很好!

返回
作者最近主题: