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

时间:2016-01-27 20:31:24

标签: r dplyr plyr frequency

我有一个带有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频率值,但需要额外的条件。

  

计数字母= A(0,3)x值和字母= B(6,9)值

     

将两个字母(3,6)统计为一个

     

计算第一个条件的反向

输出可以是新的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

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

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