我正在嘗試重新整理/減少我的數據。到目前爲止,我僱用了一個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所建議的數據創建。本,非常感謝。此外,我的代碼被修改以符合下面提供的答案。
你沒有提供的樣本數據,但是這聽起來像使用'['操作符的標準子集。 – Andrie 2012-04-27 11:27:16
@Andrie聽起來對我來說,他想讓所有條目滿足某些條件的組中的所有條目。所以'plyr'或'by'似乎更容易。 Jan,請閱讀本文,因爲它會幫助我們解決您的問題:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2012-04-27 12:03:15
非常感謝您的答案!我編輯了這篇文章,並添加了Ben所建議的數據複製(見下文)。 – Jan 2012-04-30 13:20:04