我正在尝试重塑/减少我的数据。到目前为止,我使用了一个for
循环(非常慢),但据我所知,这应该很快Plyr
。
我有很多组(公司,作为数据集中的一个因素),我想完全删除所有value
在该公司的任何单元格中显示为 0 条目的公司。因此,我创建了一个新的但在某些时候data.frame
忽略了所有显示 0 的组。value
for
循环:
Data Creation:
set.seed(1)
mydf <- data.frame(firmname = sample(LETTERS[1:5], 40, replace = TRUE),
value = rpois(40, 2))
-----------------------------
splitby = mydf$firmname
new.data <- data.frame()
for (i in 1:(length(unique(splitby)))) {
temp <- subset(mydf, splitby == as.character(paste(unique(splitby)[i])))
if (all(temp$value > 0) == "TRUE") {
new.data <- rbind(new.data, temp)
}
}
Delete all empty firm factors
new.data$splitby <- factor(new.data$splitby)
有没有办法用这个包来实现plyr
?该subset
功能可以在那种情况下使用吗?
编辑:为了重现问题,添加了 BenBarnes 建议的数据创建。本,非常感谢。此外,我的代码已更改,以符合下面提供的答案。