以R中的mtcar数据集为例,我希望为每种类型的汽车向mtcar数据集添加额外的列。有了这条线,我就可以买到汽车模型:
unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1))这是我想要增加的22列。每种车型都有一个新列:
length(unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1)))我想出的是这个代码:
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”标记这个问题,因为它们看起来很有希望。但在这方面我可能错了。谢谢你的帮助。如果我忽略了一个答案,很抱歉。
发布于 2019-02-09 11:52:13
另一种选择是使用model.matrix
cbind(mtcars, model.matrix(~ car.nms - 1))https://stackoverflow.com/questions/54605834
复制相似问题