R语言如何按指定行号为数据框新增分类列并赋值A、B、C
按行号给R数据框分配分类值的解决方法
基础R原生方案(推荐,性能最优)
无需加载第三方包,利用R原生向量索引特性直接赋值,16000条数据可瞬间处理完成,效率远高于循环写法。
代码示例:
# 1. 准备示例数据,将原始向量转为数据框以支持新增列 df <- data.frame(value = 1:10) A <- c(3, 9) B <- c(2, 6, 8) C <- c(1, 4, 5, 7, 10) # 2. 新增分类列并按行号赋值 df$category <- NA_character_ # 初始化字符类型空列 df$category[A] <- "A" df$category[B] <- "B" df$category[C] <- "C"
运行后即可得到符合要求的分类列,按行号匹配对应分类值。
Tidyverse风格方案(适合dplyr使用者)
如果日常习惯用dplyr处理数据,可以用case_when()结合行号判断实现:
library(dplyr) df <- df %>% mutate( category = case_when( row_number() %in% A ~ "A", row_number() %in% B ~ "B", row_number() %in% C ~ "C" ) )
注意事项
- 需确保A、B、C三个行号向量无重复值、无超出数据框总行数的数值,否则对应行的分类会为
NA - 如果存在行号同时属于多个向量的情况,优先级由赋值顺序决定,先赋值的分类会被后赋值的覆盖
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

