我有一个巨大的数据框架,基本 struct 如下:

data <- data.frame(species = factor(c(rep("species1", 4), rep("species2", 4), rep("species3", 4))),
                 trap = c(rep(c("A","B","C","D"), 3)),
                 count=c(6,3,7,9,5,3,6,6,5,8,1,3))
data

我想同时对每个物种的四个trap 之间的物种计数数据进行卡方检验,但不是在它们之间.对于每一个物种,可以用下面的代码来解决这个问题,但由于我的原始数据框很大,所以它不适合我.

chi_species1 <- xtabs(count~trap, data, 
                       subset = species=="species1")
chi_species1
chisq.test(chi_species1)

谢谢你的帮助!!

推荐答案

base

df <- data.frame(species = factor(c(rep("species1", 4), rep("species2", 4), rep("species3", 4))),
                   trap = c(rep(c("A","B","C","D"), 3)),
                   count=c(6,3,7,9,5,3,6,6,5,8,1,3))
df
#>     species trap count
#> 1  species1    A     6
#> 2  species1    B     3
#> 3  species1    C     7
#> 4  species1    D     9
#> 5  species2    A     5
#> 6  species2    B     3
#> 7  species2    C     6
#> 8  species2    D     6
#> 9  species3    A     5
#> 10 species3    B     8
#> 11 species3    C     1
#> 12 species3    D     3

species <- unique(df$species)

chi_species <- lapply(species, function(x) xtabs(count~trap, df, 
                      subset = species== x))

chi_species <- setNames(chi_species, species)

lapply(chi_species, chisq.test)

#> $species1
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 3, df = 3, p-value = 0.3916
#> 
#> 
#> $species2
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 1.2, df = 3, p-value = 0.753
#> 
#> 
#> $species3
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 6.2941, df = 3, p-value = 0.09815

reprex package(v2.0.1)于2022年4月25日创建

tidyverse

df %>% 
  group_by(species, trap) %>% 
  summarise(count = sum(count)) %>% 
  summarise(pvalue= chisq.test(count)$p.value) 

# A tibble: 3 × 2
  species  pvalue
  <fct>     <dbl>
1 species1 0.392 
2 species2 0.753 
3 species3 0.0981

R相关问答推荐

无法在我的情节中表现出显着的差异

在位置周围设定一个半径并识别该半径内的其他位置

将数据集中的值增加到当前包含的最大值

在组中添加值增加和减少的行

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

在另存为PNG之前隐藏htmlwidget绘图元素

我正在努力用R计算数据集中的中值逐步距离

使用for循环和粘贴创建多个变量

Data.table';S GForce-将多个函数应用于多列(带可选参数)

为左表中的所有行使用值Fill滚动左连接

函数可以跨多个列搜索多个字符串并创建二进制输出变量

在R中,我如何使用滑动窗口计算位置,然后进行过滤?

我是否可以使用多个变异项来构建顺序列(标记多个问题)

数值型数据与字符混合时如何进行绑定

如何在Quarto中使用美人鱼图表中的标记来加粗文本

为什么不能使用lApply在包装函数中调用子集

具有自定义仓位限制和计数的GGPLATE直方图

对数据帧中的列进行子集设置以通过迭代创建新的数据帧

以列名的字符向量作为参数按行应用自定义函数

具有某些列的唯一值的数据帧