【问题标题】:Convert categorical column to multiple binary columns [duplicate]将分类列转换为多个二进制列[重复]
【发布时间】:2017-06-25 15:44:40
【问题描述】:

我想将此列转换为每个品种的二进制列(1 只狗是品种,0 只狗不是那个品种)

【问题讨论】:

标签: r tidyr


【解决方案1】:

使用 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

【讨论】:

  • 我刚试过你的推荐。但它总是给我前面有 Breed 的类别名称(例如,BreedAmericanPitbull)。有办法不用重命名就好了。
  • 是的,你说得对——我说的是肉末
【解决方案2】:

一种方法是使用uniquefor-loop

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)
}

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2021-10-13
    • 1970-01-01
    • 2013-04-25
    • 2020-07-15
    相关资源
    最近更新 更多