私は多くの列(〜50)を持つdata.frameを持っています。それらのうちのいくつかは文字であり、いくつかは数値であり、3つはグループ化に使用します。R:複数の列(数値、文字)を要約し、NAsを取り除く
私が行う必要があります。
- が
- は、文字列の最初の要素を抽出する数値列のそれぞれの平均値を計算する数値列からNASに削除
たとえば、以下のように変更された虹彩データを使用しています:
data(iris)
iris$year <- rep(c(2000,3000),each=25) ## for grouping
iris$color <- rep(c("red","green","blue"),each=50) ## character column
iris[1,] <- NA ## introducing NAs
合計で〜50列あり、数値と文字は混在しています。私は何を取得することは、それぞれのグループ内の最初の値を持つ列が続くグループ内のすべての列のための手段である
giris <- group_by(iris, Species, year)
cls <- unlist(sapply(giris, class)) ## find out classes
action <- ifelse(cls == "numeric", "mean", "first")
action <- paste(action)
summarise_each(giris, action)
:私のような何かをしようとしてきました。そして、NAsは処理されない...正確には私が求めるものではない...
ヘルプ誰ですか?
'group_by'の上に' na.omit() 'を追加したいと思うかもしれませんが、これは質問の要点です。 – JasonAizkalns
@JasonAizkalns、私はそうは思わない - これは潜在的に多くの行を削除する必要があります保持する必要があります。しかし、私は 'filter(!is.na(種)&!is.na(年))'が意味をなさないことに同意します –
これは本当に素晴らしい(最も重要な)作業ソリューションであり、 summarise_eachのフードの下にある。私は本当に、本当に感謝しています、Doncendo :-)。同時に、それをスピードアップする方法があると思いますか? – rpl