gpt4 book ai didi

r - 总结同一因子上的计数和条件聚合函数

转载 作者:行者123 更新时间:2023-12-03 07:27:08 25 4
gpt4 key购买 nike

简单地说,我在总结具有相同因子的条件的计数和聚合函数时遇到问题。

假设我有这个数据框:

library(tibble)
library(dplyr)

df <- tibble(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

我在尝试联系其他人时遇到了问题。我想我需要使用管道运算符?如果是这样,有人可以提供一些指导吗?

这是我尝试过的方法,但它是明显错误的,但我不确定下一步该去哪里:

 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))) |>
summarise(total.count = n(),
count = sum(is.na(price)),
avg.price = mean(price, na.rm = TRUE),
max.price = max(price, na.rm = TRUE),
.by = c(company, year, product))

###数据

我使用的是所显示的相同数据集(...行除外)。

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

关于r - 总结同一因子上的计数和条件聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com