如何计算R中2列的组合数量

问题描述 投票:0回答:1

我是编码初学者,我在学校学习 RStudio,但我对“mtcars”数据集的这个问题感到困惑。

问题是 “创建一个交叉表,显示属于每个气缸和齿轮类组合的观测值数量。该表应显示给定汽车有 4 个气缸 3 个齿轮、4 个气缸 4 个齿轮等的观测值。报告该数据集中记录了哪种组合以及该类型汽车的观察次数。”

我可以创建交叉表,并且已经询问了 GPT 并搜索了如何报告观察数,但我找不到答案,我尝试使用 for 循环,但没有生成任何结果。

crosstabs <- data.frame('Cylinder'= mtcars$cyl,'Gear'=mtcars$gear)
print(crosstabs)
number_observations = 0
for (i in crosstabs$Cylinder) {
  for (j in crosstabs$Gear) {
    if (crosstabs[i,j] != number_observations){
      number_observations=number_observations+1
      print(paste("There are", number_observations, "cars with", i, "cylinders and", j, "gears."))
      }
    }
  }

我的意思是,如果该组合尚未在 number_observations 中,那么我将添加这些组合并向 number_observations 中再加 1。然而,这似乎是不正确的。 它没有显示任何语法错误,但不返回任何结果。 你能帮我解答这个问题吗?我需要你的帮助。之前非常感谢!

r for-loop logic rstudio crosstable
1个回答
0
投票

在下面找到两种方法来解决您的问题:

# way 1
xtabs(~ cyl + gear, data=mtcars)
# way 2
with(mtcars, table(cyl, gear))

   gear
cyl  3  4  5
  4  1  8  2
  6  2  4  1
  8 12  0  2
© www.soinside.com 2019 - 2024. All rights reserved.