答案 0 :(得分:3)
我们可以使用recast
进行数据转换
library(reshape2)
recast(df1, id.var = "Company", Company ~ value, length)
# Company CRV diesel Grande Petrol
#1 Honda 1 0 0 1
#2 Tata 0 1 1 0
df1 <- data.frame(Company = c("Honda", "Tata"), model = c("CRV", "Grande"),
version = c("Petrol", "diesel"), stringsAsFactors= FALSE)
答案 1 :(得分:1)
您基本上按列进行制表,所以您应该也可以使用table
,而不需要额外的包。
do.call(cbind, lapply(df1[-1], function(x) table(df1[[1]], x)))
## CRV Grande diesel Petrol
## Honda 1 0 0 1
## Tata 0 1 1 0
这样,相关列也会组合在一起,而不是按字母顺序排序。