R 中具有双重条件的频率 table

Frequency table with double condition in R

我有一个带有 x 值的 data.frame,我想根据两个因素对其进行计数:第一个是 x 的值,第二个取决于一个因素。这是一个示例

set.seed(111)
A<-data.frame(x=rnorm(n = 100,mean = 5,sd=1))
A$LETTER<-sample(LETTERS[1:2],100,replace=T)
A$int<-cut(A$x,breaks=c(0,3,6,9))

我需要 x 在特定区间内的频率值,但有一个额外的条件。

Count for Letter = A (0,3) x values and for letter = B (6,9) values

Count for both Letters (3,6) as one

Count the reverse of the first condition

输出可能是一个新的data.frame

说清楚

table(A$int,A$LETTER)
       
         A  B
  (0,3]  2  1
  (3,6] 32 49
  (6,9]  9  7

在这种情况下,第一个和应该是 2+7,第二个和应该是 1+9,第三个和应该是 32+49

你可以试试这个:

library(dplyr)
as.integer(table(filter(A, LETTER == 'A')$int) + rev(table(filter(A, LETTER == 'B')$int)))

输出将是:

[1]  9 81 10

请注意,您并不是真的需要 dplyr,您可以按如下方式进行不同的过滤:

as.integer(table(A[A$LETTER == 'A', ]$int) + rev(table(A[A$LETTER == 'B', ]$int)))