我這有一個班輪:如何在匿名數據框對象中按名稱訪問列以在R中過濾?
aggregate(. ~ gear,mtcars[mtcars$mpg>20,c('gear','mpg')],mean)
現在我想通過MPG> 25像他進行過濾:
aggregate(. ~ gear,mtcars[mtcars$mpg>20,c('gear','mpg')],mean)[mpg>25,]
但現在我得到一些1743線NA
項
有什麼想法?
我這有一個班輪:如何在匿名數據框對象中按名稱訪問列以在R中過濾?
aggregate(. ~ gear,mtcars[mtcars$mpg>20,c('gear','mpg')],mean)
現在我想通過MPG> 25像他進行過濾:
aggregate(. ~ gear,mtcars[mtcars$mpg>20,c('gear','mpg')],mean)[mpg>25,]
但現在我得到一些1743線NA
項
有什麼想法?
下面是基函數另一種解決方案:
subset(aggregate(. ~ gear,mtcars[mtcars$mpg>20,c('gear','mpg')],mean), mpg>25)
這裏是data.table
library(data.table)
M <- data.table(mtcars)
M[mpg>20, .(mpg=mean(mpg)), by=gear][mpg>25]
一個dplyr
的解決辦法是:
mtcars %>% group_by(gear) %>% filter(mpg>25) %>% summarise(mean(mpg))
或者說:
mtcars %>% group_by(gear) %>% filter(mpg>20) %>%
summarise(mean(mpg)) %>% filter(`mean(mpg)`>25)
你不能(和我沒有得到很多NA
S,我正確得到一個錯誤因爲找不到mpg
。你以前做過什麼事情可以找到mpg
?)。 R不能像你試圖強制它的方式工作。
您需要
tmp <- aggregate(. ~ gear,
data = subset(mtcars, mpg > 20, select = c('gear','mpg')),
FUN = mean)
with(tmp, tmp[mpg > 25, ])
> with(tmp, tmp[mpg > 25, ])
gear mpg
2 4 25.74
3 5 28.20
什麼對象是'mpg'的解決方案?我得到了>> aggregate(。〜gear,mtcars [mtcars $ mpg> 20,c('gear','mpg')],mean)[mpg> 25,] 錯誤'[.data.frame' (。〜gear,mtcars [mtcars $ mpg> 20,c(「gear」,: object'mpg'not found。)你有代碼中的任何'attach()'嗎? – jogo