简而言之,我在总结计数和聚合函数时遇到了问题,条件是相同的.

假设我有这个数据框:

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. 每个价目表的计数(包括NA、False)
  2. 每种情况下的计数均为"NA"
  3. 不含NA和False的平均价格
  4. 最高价格

    summarize(df, count = n()) #satisfies first item obviously
    

我很难找到其他人.我想我需要使用管道操作员?如果是的话,有人能提供一些指导吗?

这是我try 过的,显然是错误的,但我不确定下一步该怎么做:

 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).您可以在使用read.table读取数据时指定na.strings.但是,我猜NAs将自动检测.

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))

数据

我使用的是显示的数据set行(...行除外).

df = tbl_df(数据.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)))

R相关问答推荐

这两种创建S4对象的方法有何不同?

重复组的运行计数

从R中的地址提取街道名称

R gtsummary tBL_summary,包含分层和两个独立分组变量

有没有方法将paste 0功能与列表结合起来?

如果窗口在CLARME或集团之外,则有条件领先/滞后滚动总和返回NA

查找具有平局的多个列的最大值并返回列名或平局 destruct 者NA值

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

随机森林回归:下拉列重要性

为什么观察不会被无功值变化触发?

如何使下一个按钮只出现在Rshiny 的一段时间后?""

如何改变x轴比例的列在面

将多列合并为单独的名称—值对

线性模型斜率在减少原始数据时提供NA

`lazy_dt`不支持`dplyr/across`?

根据另一列中的值和条件查找新列的值

我如何go 掉盒子图底部的数字?

如何在PDF格式的kableExtra表格中显示管道字符?

如何删除设置大小的曲线图并添加条形图顶部数字的百分比

防止正则表达式覆盖以前的语句