首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中,如何根据另一列添加具有0/1计数的多列?

在R中,如何根据另一列添加具有0/1计数的多列?
EN

Stack Overflow用户
提问于 2019-02-09 11:38:11
回答 1查看 104关注 0票数 1

以R中的mtcar数据集为例,我希望为每种类型的汽车向mtcar数据集添加额外的列。有了这条线,我就可以买到汽车模型:

代码语言:javascript
复制
unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1))

这是我想要增加的22列。每种车型都有一个新列:

代码语言:javascript
复制
length(unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1)))

我想出的是这个代码:

代码语言:javascript
复制
mtcars01 <- mtcars
car.nms <- sapply((strsplit(row.names(mtcars), " ")), "[[", 1)
mtcars01$Mazda <- (car.nms=="Mazda")*1
mtcars01$Datsun <- (car.nms=="Datsun")*1
mtcars01$Hornet <- (car.nms=="Hornet")*1

等等等等..。检查所有的汽车模型,直到我有一个新的列为每种汽车型号,与零和1。这就是我想要的。然后,我可以循环所有独特的汽车模型,但我宁愿不添加一个循环。如果可能的话。

我自己的输入数据框架看起来类似于mtcar数据集,但我有不同数量的汽车模型,并且希望将此代码重用到不同汽车型号数量的数据帧中。我自己的数据框架可能只有3辆汽车模型,然后我需要将3列附加到我的数据框架中,并为这些车型加上0和1。我用“聚合”和“dplyr”标记这个问题,因为它们看起来很有希望。但在这方面我可能错了。谢谢你的帮助。如果我忽略了一个答案,很抱歉。

EN

回答 1

Stack Overflow用户

发布于 2019-02-09 11:52:13

另一种选择是使用model.matrix

代码语言:javascript
复制
cbind(mtcars, model.matrix(~ car.nms - 1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54605834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档