这不是一个复杂的问题,而且我有一个解决方案,但我无法摆脱有更好方法的感觉:
我有一个按类别记录成功和机会的 data.frame,如下所示:
testFrame <- data.frame(successes = c(100, 150, 18),
opportunities = c(215, 194, 40),
category = LETTERS[1:3])
testFrame$category <- as.character(testFrame$category)
我想将其转换为“高”data.frame,其中一列 1 和 0 表示成功/失败,第二列带有类别标签。我可以使用以下代码执行此操作:
tallFrame <- lapply(1:nrow(testFrame), function(rr){
cbind(rep(c(1, 0), c(testFrame[rr, "successes"], testFrame[rr, "opportunities"]-testFrame[rr, "successes"])), testFrame[rr, "category"])
})
tallFrame <- data.frame(do.call(rbind, tallFrame))
结果tallFrame
是一个矩阵,然后我可以毫无问题地将其转换为 data.frame,但这似乎是一个简单任务的大量代码。当然,有一种方法可以更高效地执行此操作,也许使用plyr
or reshape
,或者我只是在寻找一些代码高尔夫。
提前致谢。