r - 如何为重复值创建序列列?
问题描述
我有一个像这样创建的df:
ID <- c(1, 2, 3, 4)
count <- c(2, 4, 6, 10)
data <- data.frame(ID, count)
data <- data[rep(1:nrow(data), data$count),]
print(data)
我想要另一列基本上打印计数的顺序?我不确定如何最好地描述我所得到的基本上我希望它看起来像以下输出:
ID count sequence
1 1 2 1
1.1 1 2 2
2 2 4 1
2.1 2 4 2
2.2 2 4 3
2.3 2 4 4
3 3 6 1
3.1 3 6 2
3.2 3 6 3
3.3 3 6 4
3.4 3 6 5
3.5 3 6 6
4 4 10 1
4.1 4 10 2
4.2 4 10 3
4.3 4 10 4
4.4 4 10 5
4.5 4 10 6
4.6 4 10 7
4.7 4 10 8
4.8 4 10 9
4.9 4 10 10
谢谢
解决方案
我们可以用rowid
library(dplyr)
library(data.table)
data %>%
mutate(sequence = rowid(ID))
# ID count sequence
#1 1 2 1
#1.1 1 2 2
#2 2 4 1
#2.1 2 4 2
#2.2 2 4 3
#2.3 2 4 4
#3 3 6 1
#3.1 3 6 2
#3.2 3 6 3
#3.3 3 6 4
#3.4 3 6 5
#3.5 3 6 6
#4 4 10 1
#4.1 4 10 2
#4.2 4 10 3
#4.3 4 10 4
#4.4 4 10 5
#4.5 4 10 6
#4.6 4 10 7
#4.7 4 10 8
#4.8 4 10 9
#4.9 4 10 10
如果它基于“计数”列
data %>%
mutate(sequence = rowid(count))
或使用ave
frombase R
data$sequence <- with(data, ave(seq_along(ID), ID, FUN = seq_along))
推荐阅读
- stored-procedures - 存储过程在 laravel 中显示 [加载资源失败:服务器响应状态为 500(内部服务器错误)]
- html - 将三个 div 与右侧的图像垂直对齐
- r - R根据日期值对大数据框进行子集化
- javascript - 模态图像库滑块全屏
- python - python将字符串转换为逻辑门函数
- amazon-web-services - 如何配置我的 RDS postgresql 实例以便我可以与我的 API 服务器 EC2 ubuntu 机器进行交互?
- javascript - 根据 ${selectedcount} 显示不同的输出
- android - 如何阻止机器人使用谷歌登录?
- magento - 如何将 Magento 网站从一台服务器转移到另一台服务器
- c++ - 运算符重载使用运算符 + 为类模板添加