对数据框中组内的行进行编号

对数据框中组内的行进行编号,第1张

使用与此类似的数据框:

set.seed(100)  df <- data.frame(cat = c(rep("aaa", 5), rep("bbb", 5), rep("ccc", 5)), val = runif(15))             df <- df[order(df$cat, df$val), ]  df   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

我正在尝试在每个组中添加一个带有编号的列。这样做显然没有使用 R 的力量:

 df$num <- 1   for (i in 2:(length(df[,1]))) {     if (df[i,"cat"]==df[(i-1),"cat"]) {       df[i,"num"]<-df[i-1,"num"]+1       }   }   df   cat        val num  1  aaa 0.05638315   1  2  aaa 0.25767250   2  3  aaa 0.30776611   3  4  aaa 0.46854928   4  5  aaa 0.55232243   5  6  bbb 0.17026205   1  7  bbb 0.37032054   2  8  bbb 0.48377074   3  9  bbb 0.54655860   4  10 bbb 0.81240262   5  11 ccc 0.28035384   1  12 ccc 0.39848790   2  13 ccc 0.62499648   3  14 ccc 0.76255108   4  15 ccc 0.88216552   5

什么是这样做的好方法?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/read/1369995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-15
下一篇 2022-06-15

发表评论

登录后才能评论
保存