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