使用R的变量枚举[duplicate]

问题描述 投票:1回答:2

我想为每个唯一的“ cat”值添加一个数字列“ ID”。在其他团队中,枚举“ cat”

    cat        val  
1  aaa 0.05638315  
2  aaa 0.25767250  
3  aaa 0.30776611  
4  aaa 0.46854928  
5  aaa 0.55232243  
6  bbb 0.17026205  
7  bbb 0.37032054  
8  bbb 0.48377074  
9  bbb 0.54655860  
10 bbb 0.81240262  
11 ccc 0.28035384  
12 ccc 0.39848790  
13 ccc 0.62499648  
14 ccc 0.76255108  
15 ccc 0.88216552 

带有数字ID列的预期输出

df  
   cat        val    ID
1  aaa 0.05638315    1
2  aaa 0.25767250    1
3  aaa 0.30776611    1
4  aaa 0.46854928    1
5  aaa 0.55232243    1
6  bbb 0.17026205    2
7  bbb 0.37032054    2
8  bbb 0.48377074    2
9  bbb 0.54655860    2
10 bbb 0.81240262    2
11 ccc 0.28035384    3
12 ccc 0.39848790    3
13 ccc 0.62499648    3
14 ccc 0.76255108    3
15 ccc 0.88216552    3
r
2个回答
0
投票

df$ID <- sapply(df$cat, function(x) which(x == unique(df$cat)))


0
投票

df$ID <- as.numeric(factor(df$cat, levels=unique(df$cat)))

factor(v, levels=c("a", "c", "b"), labels=seq(unique(v)))

levels=unique(df$cat)确保在将向量factor()设为df$cat时按出现的顺序1、2、3 ...进行编号。 as.numeric()显示了这些因素背后的数字。

df$ID <- unlist(mapply(rep, seq(unique(df$cat)), table(df$cat)))

© www.soinside.com 2019 - 2024. All rights reserved.