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)))
我有一个带有 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)))