r - R中序列的索引组合

标签 r sequence

假设我在 R 中有这个数据框 df:

 UserID <- c(1, 1, 1, 5, 5, 7, 7, 9, 9, 9)
 PathID <- c(1,2,3,1,2,1,2,1,2,3)
 Page <- c("home", "about", "services", "home", "pricing", "pricing", "home", "about", "home", "services")
 df <- data.frame(UserID, PathID, Page)

我想添加一个名为“Set”的列,它是序列组合的索引。

所以,我的输出应该是这样的:

 UserID <- c(1, 1, 1, 5, 5, 7, 7, 9, 9, 9)
 PathID <- c(1,2,3,1,2,1,2,1,2,3)
 Page <- c("home", "about", "services", "home", "pricing", "pricing", "home", "about", "home", "services")
Set <- c(1,1,1,2,2,2,2,1,1,1)
 df1 <- data.frame(UserID, PathID, Page, Set)

我真的很感激这里的一些帮助。

最佳答案

data.table 选项使用 as.factor

> setDT(df)[, Set := toString(sort(Page)), UserID][, Set := as.integer(as.factor(Set))][]
    UserID PathID     Page Set
 1:      1      1     home   1
 2:      1      2    about   1
 3:      1      3 services   1
 4:      5      1     home   2
 5:      5      2  pricing   2
 6:      7      1  pricing   2
 7:      7      2     home   2
 8:      9      1    about   1
 9:      9      2     home   1
10:      9      3 services   1

类似的基础 R 实现是

> transform(df, Set = as.integer(as.factor(ave(Page,UserID,FUN = function(x) toString(sort(x))))))
   UserID PathID     Page Set
1       1      1     home   1
2       1      2    about   1
3       1      3 services   1
4       5      1     home   2
5       5      2  pricing   2
6       7      1  pricing   2
7       7      2     home   2
8       9      1    about   1
9       9      2     home   1
10      9      3 services   1

关于r - R中序列的索引组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73499304/

相关文章:

r - 如何将 !duplicate 与 rpy2 一起使用?

oracle - 无法使用 Oracle 序列获取 EclipseLink DynamicEntity 的工作

Java - 确定事件顺序 - AB 或 BA

python - 返回列表中以给定最小频率出现的项目

r - 使用 'tmerge' 包中的 'survival' 向生存数据添加时变协变量

r - R 中的照明校正或背景扣除

r - ggplot2:绘制具有不同截距但具有相同斜率的回归线

r - 通过R中的行字符串值更改列值

java - 如何对给定元素左侧的 N 个数组元素求和?

Hibernate 模式参数在@SequenceGenerator 注释中不起作用