r - 如何按值将升序数字赋予数据框中的行
问题描述
我有一个类似的数据框:
[a][b][c]
1 xxx a
2 xxx a
3 xxx a
4 xxx a
5 xxx b
6 xxx b
7 xxx c
8 xxx c
我需要做的是创建一个带有升序数字的新列。但是对于 [c] 的每个唯一值,数字都必须回到 1。我正在寻找这样的东西:
[a][b][c]
1 xxx a 1
2 xxx a 2
3 xxx a 3
4 xxx a 4
5 xxx b 1
6 xxx b 2
7 xxx c 1
8 xxx c 2
解决方案
dplyr
来自的软件包tidyverse
可以提供帮助。使用n()
函数,您可以创建所需的索引。尝试这个:
library(tidyverse)
#Data
df <- data.frame(var1=rep(c('a','b'),4),stringsAsFactors = F)
#Mutate
df %>% arrange(var1) %>% group_by_all() %>% mutate(var2=1:n())
输出:
# A tibble: 8 x 2
# Groups: var1 [2]
var1 var2
<chr> <int>
1 a 1
2 a 2
3 a 3
4 a 4
5 b 1
6 b 2
7 b 3
8 b 4
推荐阅读
- python - 您能否详细说明一下 print 功能在这里实际上做了什么?
- java - 对齐和缩进数组元素 - Java
- python - 具有 min_max 年份计算的 Groupby 代码
- arrays - awk 根据日期验证过滤数组中的值,如果在 START 和 END 处与文本匹配,则打印正确的输出,包括匹配
- flutter - 在颤动中插入动画值
- json - 带有 VBA 的 Ebay JSON API?
- asp.net-mvc - AD-角色基础授权
- python - 如何在不同年份的不同月份只添加多个条形图
- java - 如何在 Android 10 上从图库中获取带有路径的图像?
- javascript - 如何在 Laravel 中正确添加 Javascript 依赖项和 CSS 文件