我有几千个案例,需要用每个id变量的折叠版本替换订单。 has列是我正在使用的,而want列是我想要的样子。任何想法都会非常感激。
{{1}}
答案 0 :(得分:4)
你所要做的就是按组排名。这是一个简单的尝试
PARSEFACEBOOKUTILSV4.framework
FBSDKCOREKIT.framework
FBSDKLOGINKIT.framework
BOLTS.framework
您可能需要查看ave(have, id, FUN = rank) - 1L
## [1] 0 1 2 0 1 0 1 2 3 0 1 2 3 4
处理重复项处理的不同变体(特别是?rank
)
答案 1 :(得分:2)
你可以使用dplyr,并给每个rownumber - 1:
library(dplyr)
as.data.frame(reorder) %>% group_by(id) %>%
mutate(want2 = row_number() - 1)
Source: local data frame [14 x 4]
Groups: id [4]
id have want want2
(dbl) (dbl) (dbl) (dbl)
1 1 0 0 0
2 1 1 1 1
3 1 3 2 2
4 2 0 0 0
5 2 2 1 1
6 3 0 0 0
7 3 1 1 1
8 3 4 2 2
9 3 6 3 3
10 4 1 0 0
11 4 3 1 1
12 4 4 2 2
13 4 5 3 3
14 4 7 4 4