简单地说,我在总结条件相同的计数函数和聚合函数时遇到了问题。
假设我有这个 Dataframe :
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)))
它创建了这个 Dataframe (本质上):
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)
,然后在一个集合(即 Dataframe )中获取以下所有信息:
1.每个价目表的计数(包括NA、False)
1.每个"NA"条件的计数
1.不含NA和False的平均价格
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))
是的,我已经查阅了文档,我相信答案就在那里,但它们可能对我的理解来说太先进了。
1条答案
按热度按时间qco9c6ql1#
假设您的原始数据集与您创建的数据集相似(即
NA
与character
相同。您可以在使用read.table
读取数据时指定na.strings
。但是,我猜NAs将被自动检测。price
列是factor
,需要将其转换为numeric
类。当您使用as.numeric
时,所有非数字元素(即"NA"
、FALSE)将强制转换为NA
,并显示警告。数据
我使用的
dataset
(除了...
行)与显示的相同。