r - 如何创建连续的组号

标签 r r-faq

我有一个数据框(all_data),其中有一个站点列表(1 ...至n)及其分数,例如

  site  score
     1    10
     1    11  
     1    12
     4    10 
     4    11
     4    11
     8    9
     8    8
     8    7

我想创建一列,以数字顺序对网站的每个级别进行编号,例如计数器。在此示例中,站点(1、4和8)在“数字”列中将具有从1到3的对应计数器:
site  score number
     1    10    1
     1    11    1 
     1    12    1 
     4    10    2
     4    11    2
     4    11    2
     8    9     3
     8    8     3 
     8    7     3

我相信这必须很容易解决,但是我还没有找到办法。

最佳答案

试试Data$number <- as.numeric(as.factor(Data$site))
旁注:一方面,我和@Chase的解决方案之间的区别,另一方面,对于@DWin的解决方案之间的区别是数字的排序。 as.factorfactor都将自动对级别进行排序,而@DWin解决方案中不会发生这种情况:

Dat <- data.frame(site = rep(c(1,8,4), each = 3), score = runif(9))

Dat$number <- as.numeric(factor(Dat$site))
Dat$sitenum <- match(Dat$site, unique(Dat$site) ) 


> Dat
  site     score number sitenum
1    1 0.7377561      1       1
2    1 0.3131139      1       1
3    1 0.7862290      1       1
4    8 0.4480387      3       2
5    8 0.3873210      3       2
6    8 0.8778102      3       2
7    4 0.6916340      2       3
8    4 0.3033787      2       3
9    4 0.6552808      2       3

关于r - 如何创建连续的组号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112803/

相关文章:

r - 仅用水平线绘制阶跃函数

r - R中的目标变量重新编码

r - 将 FIX 消息格式 ("Tag=Value") 转换为 CSV

r - %op% 运算符是什么意思?例如 "%in%"?

r - 选择每组中具有最大值的行

R 包命名空间

在 AWS 上运行 r 模型 - 多个 vCPU 是否像多核系统一样运行?

r - 将数据帧转换为向量(按行)

r - 具有 (1) ALL 和 (2) ANY 列大于特定值的子集行

r - 为什么当我在`dplyr`之后加载`plyr`时,总结或变异不能与group_by一起使用?