Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按组求和变量,然后运行函数_R_Dplyr - Fatal编程技术网

R 按组求和变量,然后运行函数

R 按组求和变量,然后运行函数,r,dplyr,R,Dplyr,我有一个数据框,我想对它进行一些统计测试。但是,我想首先基于其中一列对数据进行分组 下面是一个示例数据帧: CATEGORY ITEM SHOP1 STOCK SHOP2 STOCK Fruit Orange 5 9 Fruit Apple 12 32 Fruit Pear 17 6 Veg Carrots 59

我有一个数据框,我想对它进行一些统计测试。但是,我想首先基于其中一列对数据进行分组

下面是一个示例数据帧:

CATEGORY   ITEM     SHOP1 STOCK   SHOP2 STOCK
 Fruit    Orange         5             9
 Fruit    Apple         12            32
 Fruit     Pear         17             6
  Veg    Carrots        59            72
  Veg    Potatoes        6            57
  Veg   Courgette       43            22
  Veg    Parsnips        5             9
  ...      ...         ...           ...
library(broom)
library(dplyr)

df %>% group_by(CATEGORY) %>%
  summarise_at(vars(matches("SHOP")), sum) %>%
  do(tidy(chisq.test(.[, grep("SHOP",names(.))])))
所以在这个例子中,我想看看卡方分布,但是跨越类别-所以我想把数据简化成如下表:

          SHOP1 SHOP2
   FRUIT    34    47
     VEG   113   160
其中,表格显示了每个商店每个类别的库存总和(这是一个非常简化的版本-我在几百行中运行到37个类别的数据),不再指定项目,只指定类别


所以我想我可以
按(类别)分组
,然后对分组数据进行卡方检验,但这似乎不起作用。我想我需要把这两列的数字加起来,但我不知道如何结合卡方检验。这件事我已经做了一段时间了,运气不好,所以我非常感谢你的帮助

在将来,如果您编写了不起作用的代码及其输出,这将很有帮助。据我所知,您正试图基于数据帧创建该表。对吗

之前的一篇文章已经很好地回答了这个问题:

从那篇文章来看,答案似乎是:


df%%>%groupby(CATEGORY)%%>%summary(SHOP1=sum(SHOP1),SHOP2=sum(SHOP2))

将来,如果您编写了不起作用的代码及其输出,这将很有帮助。据我所知,您正试图基于数据帧创建该表。对吗

之前的一篇文章已经很好地回答了这个问题:

从那篇文章来看,答案似乎是:


df%>%groupby(CATEGORY)%%>%summary(SHOP1=sum(SHOP1),SHOP2=sum(SHOP2))
我们可以使用
dplyr
对数据进行汇总,并使用
broom
包中的
tidy
函数在数据框中返回
chisq.test
的结果:

CATEGORY   ITEM     SHOP1 STOCK   SHOP2 STOCK
 Fruit    Orange         5             9
 Fruit    Apple         12            32
 Fruit     Pear         17             6
  Veg    Carrots        59            72
  Veg    Potatoes        6            57
  Veg   Courgette       43            22
  Veg    Parsnips        5             9
  ...      ...         ...           ...
library(broom)
library(dplyr)

df %>% group_by(CATEGORY) %>%
  summarise_at(vars(matches("SHOP")), sum) %>%
  do(tidy(chisq.test(.[, grep("SHOP",names(.))])))

我们可以使用
dplyr
对数据进行汇总,并使用
broom
包中的
tidy
函数在数据框中返回
chisq.test
的结果:

CATEGORY   ITEM     SHOP1 STOCK   SHOP2 STOCK
 Fruit    Orange         5             9
 Fruit    Apple         12            32
 Fruit     Pear         17             6
  Veg    Carrots        59            72
  Veg    Potatoes        6            57
  Veg   Courgette       43            22
  Veg    Parsnips        5             9
  ...      ...         ...           ...
library(broom)
library(dplyr)

df %>% group_by(CATEGORY) %>%
  summarise_at(vars(matches("SHOP")), sum) %>%
  do(tidy(chisq.test(.[, grep("SHOP",names(.))])))

我在这方面没有丰富的经验,但是
purrr
包可能会有所帮助。您是否厌倦了summary()函数中的卡方检验<代码>group_by(x)%%>%摘要(…我对它没有丰富的经验,但是
purrr
包可能会有所帮助。你是否厌倦了Summary()函数中的卡方检验?
group_by(x)%%>%摘要(…
感谢您的回复。我正试图根据数据帧生成表格,然后在上面运行卡方检验。您给我的链接中的答案生成了表格,但在表格上运行卡方检验后会出现错误
“x”的所有条目都必须是非负且有限的
。感谢您的回复。我试图根据数据帧创建表格,然后在其上运行卡方检验。您给我的链接中的答案创建了表格,但在表格上运行卡方检验后会出现错误
“x”的所有条目都必须是非负且有限的