簡単に言えば、カウントと集計関数を同じ要因の条件で要約するのに問題があります。
このデータフレームがあるとします:
library(dplyr)
df = tbl_df(data.frame(
company=c("Acme", "Meca", "Emca", "Acme", "Meca", "Emca"),
year=c("2011", "2010", "2009", "2011", "2010", "2013"),
product=c("Wrench", "Hammer", "Sonic Screwdriver", "Fairy Dust",
"Kindness", "Helping Hand"),
price=c("5.67", "7.12", "12.99", "10.99", NA, FALSE)))
(本質的に)このデータフレームを作成します:
company year product price
1 Acme 2011 Wrench 5.67
2 Meca 2010 Hammer 7.12
3 Emca 2009 Sonic Screwdriver 12.99
4 Acme 2011 Fairy Dust 10.99
5 Meca 2010 Kindness NA
... ... ... ... ...
n Emca 2013 Helping Hand FALSE
df <- group_by(df, company, year, product)
にして、次の情報をすべて1つのコレクション(つまり、データフレーム)で取得するとします。
最高価格
summarize(df, count = n()) #satisfies first item obviously
他の人を取得しようとして問題があります。パイプ演算子を使用する必要があると思いますか?もしそうなら、誰でもいくつかのガイダンスを提供できますか?
これは私が試したものであり、明らかに間違っていますが、次にどこに行くべきかわかりません:
summarize(df,
total.count = n(),
count = filter(df, is.na(price)),
avg.price = filter(df, !is.na(price), price != FALSE),
max.price = max(filter(df, !is.na(price), price != FALSE))
そして、はい、私はドキュメントをレビューしました、そして、答えはそこにあると確信しています、しかし、彼らは私の理解するためにあまりに高度かもしれません。前もって感謝します!
元のデータセットが作成したデータセットに似ていると仮定します(つまり、NA
としてcharacter
を使用します。na.strings
を使用してデータを読み取り中にread.table
を指定できます。 NAは自動的に検出されます。
price
列はfactor
であり、numeric
クラスに変換する必要があります。 as.numeric
を使用すると、すべての非数値要素(つまり、"NA"
、FALSE)がNA
に強制され、警告が表示されます。
library(dplyr)
df %>%
mutate(price=as.numeric(as.character(price))) %>%
group_by(company, year, product) %>%
summarise(total.count=n(),
count=sum(is.na(price)),
avg.price=mean(price,na.rm=TRUE),
max.price=max(price, na.rm=TRUE))
表示されたのと同じdataset
(...
行を除く)を使用しています。
df = tbl_df(data.frame(company=c("Acme", "Meca", "Emca", "Acme", "Meca","Emca"),
year=c("2011", "2010", "2009", "2011", "2010", "2013"), product=c("Wrench", "Hammer",
"Sonic Screwdriver", "Fairy Dust", "Kindness", "Helping Hand"), price=c("5.67",
"7.12", "12.99", "10.99", "NA",FALSE)))