自动将R因子扩展为每个因子级别的1/0指标变量的集合

自动将R因子扩展为每个因子级别的1/0指标变量的集合

我有一个R数据帧,其中包含我想要“扩展”的因子,因此对于每个因子级别,新数据帧中都有一个关联列,其中包含1/0指示符。例如,假设我有:

df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4))

我想要:

df.desired  <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4))

因为对于某些需要完全数字数据框的分析(例如,主成分分析),我认为这个特性可能是内置的。写一个函数来做这个不应该太难,但我可以预见一些与列名相关的挑战,如果已存在某些内容,我宁愿使用它。


肥皂起泡泡
浏览 374回答 3
3回答

拉丁的传说

使用model.matrix功能:model.matrix(&nbsp;~&nbsp;Species&nbsp;-&nbsp;1,&nbsp;data=iris&nbsp;)

莫回无

使用reshape2包的快速方法:require(reshape2)> dcast(df.original, ham ~ eggs, length)Using ham as value column: use value_var to override.&nbsp; ham bar foo1&nbsp; &nbsp;1&nbsp; &nbsp;0&nbsp; &nbsp;12&nbsp; &nbsp;2&nbsp; &nbsp;0&nbsp; &nbsp;13&nbsp; &nbsp;3&nbsp; &nbsp;1&nbsp; &nbsp;04&nbsp; &nbsp;4&nbsp; &nbsp;1&nbsp; &nbsp;0请注意,这会精确生成所需的列名称。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java