在 R 中生成组内的序列

编程入门 行业动态 更新时间:2024-10-18 20:29:57
本文介绍了在 R 中生成组内的序列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试获取类别中的序列.

I am trying to obtain a sequence within category.

我的数据是:

A B 1 1 1 2 1 2 1 3 1 3 1 3 1 4 1 4

我想得到变量c",比如我的数据:

and I want to get variable "c" such as my data look like:

A B C 1 1 1 1 2 1 1 2 2 1 3 1 1 3 2 1 3 3 1 4 1 1 4 2

推荐答案

Use ave with seq_along:

Use ave with seq_along:

> mydf$C <- with(mydf, ave(A, A, B, FUN = seq_along)) > mydf A B C 1 1 1 1 2 1 2 1 3 1 2 2 4 1 3 1 5 1 3 2 6 1 3 3 7 1 4 1 8 1 4 2

如果您的数据已经被排序(就像在这种情况下一样),您还可以使用 sequence 和 rle (mydf$C <- sequence(rle(do.call(paste, mydf))$lengths)),但是 ave 没有这个限制.

If your data are already ordered (as they are in this case), you can also use sequence with rle (mydf$C <- sequence(rle(do.call(paste, mydf))$lengths)), but you don't have that limitation with ave.

如果你是 data.table 的粉丝,你可以使用 .N 如下:

If you're a data.table fan, you can make use of .N as follows:

library(data.table) DT <- data.table(mydf) DT[, C := sequence(.N), by = c("A", "B")] DT # A B C # 1: 1 1 1 # 2: 1 2 1 # 3: 1 2 2 # 4: 1 3 1 # 5: 1 3 2 # 6: 1 3 3 # 7: 1 4 1 # 8: 1 4 2

更多推荐

在 R 中生成组内的序列

本文发布于:2023-10-26 23:47:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1531697.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:序列   中生

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!