R 将分类列转换为多个二进制列
我想将此列转换为每个品种的二进制列(1只狗是品种,0只狗不是品种)R 将分类列转换为多个二进制列,r,tidyr,R,Tidyr,我想将此列转换为每个品种的二进制列(1只狗是品种,0只狗不是品种) 一种方法是将unique与for循环一起使用 Breed = c( "Sheetland Sheepdog Mix", "Pit Bull Mix", "Lhasa Aposo/Miniature", "Cairn Terrier/Chihuahua Mix", "American Pitbull", "Cairn Terrier", "Pit Bull Mix" ) df=data.frame(Br
一种方法是将
unique
与for循环一起使用
Breed = c(
"Sheetland Sheepdog Mix",
"Pit Bull Mix",
"Lhasa Aposo/Miniature",
"Cairn Terrier/Chihuahua Mix",
"American Pitbull",
"Cairn Terrier",
"Pit Bull Mix"
)
df=data.frame(Breed)
for (i in unique(df$breed)){
df[,paste0(i)]=ifelse(df$Breed==i,1,0)
}
使用model.matrix()将分类变量转换为二进制变量
Breed = c(
"Sheetland Sheepdog Mix",
"Pit Bull Mix",
"Lhasa Aposo/Miniature",
"Cairn Terrier/Chihuahua Mix",
"American Pitbull",
"Cairn Terrier",
"Pit Bull Mix"
)
df=data.frame(Breed)
dfcat = data.frame(model.matrix(~ df$Breed-1, data=df))
names(dfcat) = levels(df$Breed)
因此,dfcat包含二进制变量:
dfcat
#American Pitbull Cairn Terrier Cairn Terrier/Chihuahua Mix Lhasa Aposo/Miniature Pit Bull Mix Sheetland Sheepdog Mix
# 0 0 0 0 0 1
# 0 0 0 0 1 0
# 0 0 0 1 0 0
# 0 0 1 0 0 0
# 1 0 0 0 0 0
# 0 1 0 0 0 0
# 0 0 0 0 1 0
不要把你的数据作为图片发布,请学习如何给出一个我刚刚试过你的推荐。但它总是给我前面有品种的类别的名称(例如,BreedAmericanPitbull)。如果能有一个不用重新命名的方法就好了。是的,你是对的,我说的是切碎的