Цикл с фактором в R - PullRequest
       3

Цикл с фактором в R

0 голосов
/ 28 января 2011

Таким образом, этот код заполняет значения вектора Bone в соответствии со значением фактора bonegrp.Я хотел бы сделать это в более сжатой форме.

Спасибо!

v <- dat$bonegrp=="Bone2"  
Bone[v] <- "Gast 1"  
v <- dat$Bonegrp=="Bone3"  
Bone[v] <- "Gast 2"  
v <- dat$Bonegrp=="Bone4"  
Bone[v] <- "Vert1"  
v <- dat$Bonegrp=="Bone5"  
Bone[v] <- "Vert2"  
v <- dat$Bonegrp=="Bone6"  
Bone[v] <- "Femur"  
v <- dat$Bonegrp=="Bone7"  
Bone[v] <- "Tibia"  
v <- dat$Bonegrp=="Bone8"   
Bone[v] <- "Meta."  
v <- dat$Bonegrp=="Bone9"  
Bone[v] <- "Phal."  
v <- dat$Bonegrp=="Bone10"  
Bone[v] <- "PCau."  
v <- dat$Bonegrp=="Bone11"  
Bone[v] <- "MCau."  
v <- dat$Bonegrp=="Bone12"  
Bone[v] <- "DCau.  

Ответы [ 2 ]

6 голосов
/ 28 января 2011

Если в Bonegrp всего 12 уровней, вы можете увидеть, работает ли это (отредактировано для дополнительной информации относительно структуры данных):

Bone <- c(NA, "Gast 1", "Gast 2", "Vert1", "Vert2", "Femur","Tibia", "Meta.", 
          "Phal.", "PCau.", "MCau.", "DCau.")[as.numeric(dat$Bonegrp)]

Он в основном использует вектор и ищет правильную строку на основе числового эквивалента Bonegrp. Вы действительно должны предоставить больше информации о ваших данных. Просто предоставленного кода часто недостаточно.

3 голосов
/ 28 января 2011
match=data.frame(bonegrp=c('Bone2','Bone3','Bone24','Bone5','Bone6','Bone7','Bone8','Bone9','Bone10','Bo
ne11','Bone12'),type=c('Gast 1','Gast 1','Vert1','Vert2','Femur','Tibia','Meta.','Phal','Pcau.','Mcau.','DCau'))

new_data=merge(dat,match,by='bonegrp')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...