计算 R 中具有特定列条件的行

count rows with specific column condition in R

假设我有通过以下代码创建的数据集:

set.seed(3192)
Data <- data.frame(
  X = sample(50,20),
  Y = sample(letters[1:4], 20, replace = TRUE)
)
Data <- Data[do.call(order,Data),]
Data
## X  Y 
## 2  b
## 3  c
## 4  c
## ...
## ...
## 47 c
## 49 d
## 50 a

我想通过扫描 X 列中大小为 10 的 window 来计算 Y 列中 "C" 的出现次数。 因此,输出将如下所示:

X_Range Count_of_c
 1-10      2
11-20      0
21-30      4
31-40      1
41-50      1

有没有人有想法?

您可以使用 cut 函数在您的 x 列上创建分组,然后按此 cut 列分组以计算计数(在这里,我使用 dplyr):

library(dplyr)
Data %>%  mutate(Cut = cut(X, breaks = seq(0,50, by = 10))) %>% 
  group_by(Cut,Y,.drop = FALSE) %>%
  summarise(Count_of_c = n()) %>%
  filter(Y =="c") 

# A tibble: 5 x 3
# Groups:   Cut [5]
  Cut     Y     Count_of_c
  <fct>   <fct>      <int>
1 (0,10]  c              0
2 (10,20] c              0
3 (20,30] c              1
4 (30,40] c              1
5 (40,50] c              3

是否符合您的预期?