我試圖找到一個沒有複雜子集和/或逐行迭代的優雅解決方案。我會通過例子來解釋:彙總條件語句
# Load data
df1 <- mtcars
# Can aggregate with simple math functions i.e. mean or sum
hp_by_cyl <- aggregate(hp ~ cyl, data=df1, mean)
> hp_by_cyl
cyl hp
1 4 82.63636
2 6 122.28571
3 8 209.21429
好的。但是,在我真正更復雜的數據中,我希望彙總一個邏輯值 - 即,如果屬於類別A的任何行的x爲真,則y = 1。所以致以例如我可以創建邏輯變量柱:
df1$logic <- ifelse(df1$gear==4 & df1$hp < 150, 1, 0)
# How do I aggregate the logical values levels of cyl to answer yes/no
# if any car with x cylinders has 4 gears and < 150 hp ?
# So I want an finished table like this:
cyl logic
4 1
6 1
8 0
我的問題是如何使用集合體(或替代)命令,以產生像這樣的表?即組合邏輯狀態而不是數值?
我還需要處理也是在現實中編碼缺失值,從而效仿這種複雜性,我會做出一個邏輯的99:
df1[5, ]$logic <- 99
如果cyl
一個價值的一定水平是1, 99可以忽略 - 但如果所有其他人都是0,那麼聚合應該是99.
道歉,如果有一個簡單的答案我沒有看到我的真實數據,它似乎令人望而生畏。我可以破解一個令人討厭的解決方案,但我知道它會很慢,我有一個14000 X 140大小的數據集。預先感謝所有。
什麼問題? – Carl
我不知道如何編寫它來生成我想要的彙總表。編輯爲clariaty – user2498193