因此,此代码根据因子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.
答案 0 :(得分:6)
如果Bonegrp中只有12个级别,那么您可以看到它是否有效(根据有关数据结构的其他信息进行编辑):
Bone <- c(NA, "Gast 1", "Gast 2", "Vert1", "Vert2", "Femur","Tibia", "Meta.",
"Phal.", "PCau.", "MCau.", "DCau.")[as.numeric(dat$Bonegrp)]
它基本上是使用向量并根据Bonegrp的数字等价物查找正确的字符串。您真的应该 提供有关数据的更多信息。提供的代码通常是不够的。
答案 1 :(得分:3)
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')