在R中使用if语句对变量进行分组

在R中使用if语句对变量进行分组,r,if-statement,R,If Statement,我想做一个简单的if语句,将代码分组。这个变量有数字代码,我想创建一个新变量,将几个数字代码组合在一起。我已经编写了下面的if语句,但是因为它们有很多代码(30个代码),所以我需要帮助编写一个更优雅的代码来对变量进行分组,而不是编写30多个if语句 Data2$RevisedSIC.Group <-c() for (i in 1:length(Data2$SIC.Group )) { if (Data2$SIC.Group[i] =="10110") Data2$RevisedSIC.Gr

我想做一个简单的if语句,将代码分组。这个变量有数字代码,我想创建一个新变量,将几个数字代码组合在一起。我已经编写了下面的if语句,但是因为它们有很多代码(30个代码),所以我需要帮助编写一个更优雅的代码来对变量进行分组,而不是编写30多个if语句

Data2$RevisedSIC.Group <-c()
for (i in 1:length(Data2$SIC.Group )) {
if (Data2$SIC.Group[i] =="10110") Data2$RevisedSIC.Group [i]="Metal" else 
if (Data2$SIC.Group[i] =="10410") Data2$RevisedSIC.Group [i]="Metal" else
if (Data2$SIC.Group[i] =="10439") Data2$RevisedSIC.Group [i]="Metal" else
if (Data2$SIC.Group[i] =="14111") Data2$RevisedSIC.Group [i]="Stone" else
if (Data2$SIC.Group[i] =="10421") Data2$RevisedSIC.Group [i]="Stone" }

Data2$RevisedSIC.Group您可以在%
中使用
%

metals <- c("10110","10410","10439")
stones <- c("14111","10421")
# ... and so on for each group

if ( Data2$SIC.Group[i] %in% metals ) {
    Data2$SIC.Group[i] <- "Metal"
} else if ( Data2$SIC.Group[i] %in% stones ) {
    Data2$SIC.Group[i] <- "Stone"

金属看看
匹配

lookup <- data.frame(code=c('10110','10410','10439','14111','10421'), name=c('Metal','Metal','Metal','Stone','Stone'))

Data2$RevisedSIC.Group <- lookup$name[match(Data2$SIC.Group,lookup$code)]

lookup不需要循环

Data2 <-data.frame(rep(c(10110,10410,10439,14111),2))
colnames(Data2) <-"SIC.Group"

Data2$RevisedSIC.Group[Data2$SIC.Group %in% c(10110,10410,10439)] <- "Metal"
Data2$RevisedSIC.Group[Data2$SIC.Group %in% 14111] <- "Stone"

  SIC.Group RevisedSIC.Group
1     10110            Metal
2     10410            Metal
3     10439            Metal
4     14111            Stone
5     10110            Metal
6     10410            Metal
7     10439            Metal
8     14111            Stone

Data2感谢大家的时间和回答!
lookup <- data.frame(code=c('10110','10410','10439','14111','10421'), name=c('Metal','Metal','Metal','Stone','Stone'))

Data2$RevisedSIC.Group <- lookup$name[match(Data2$SIC.Group,lookup$code)]
Data2 <-data.frame(rep(c(10110,10410,10439,14111),2))
colnames(Data2) <-"SIC.Group"

Data2$RevisedSIC.Group[Data2$SIC.Group %in% c(10110,10410,10439)] <- "Metal"
Data2$RevisedSIC.Group[Data2$SIC.Group %in% 14111] <- "Stone"

  SIC.Group RevisedSIC.Group
1     10110            Metal
2     10410            Metal
3     10439            Metal
4     14111            Stone
5     10110            Metal
6     10410            Metal
7     10439            Metal
8     14111            Stone