我有一个数据框(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.factor
和factor
都将自动对级别进行排序,而@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/