R 在下一次计数中计数行并排除行

R 在下一次计数中计数行并排除行,r,dplyr,R,Dplyr,我试图计算满足条件的组中的行数,但如果这些行数出现在另一级别的后续计数中,则排除这些行数本质上,我试图在随后的人口普查中统计新的和独特的个体发生率,以便通过人口普查创建累积分布。 请注意,样本数据集来自一个较大数据集的样本,该数据集通过处理具有不等的n()值。此外,个人可能会出现在人口普查中,但不会出现在下一次人口普查中 样本数据集 预期产量 编辑/解释预期输出 对于treatment=H,census=4,变量count=0。之所以为4,是因为在整个普查过程中已经检测到3个人的值高于0。我认为

我试图计算满足条件的组中的行数,但如果这些行数出现在另一级别的后续计数中,则排除这些行数本质上,我试图在随后的人口普查中统计新的和独特的个体发生率,以便通过人口普查创建累积分布。

请注意,样本数据集来自一个较大数据集的样本,该数据集通过处理具有不等的
n()
值。此外,个人可能会出现在人口普查中,但不会出现在下一次人口普查中

样本数据集 预期产量 编辑/解释预期输出 对于
treatment=H
census=4
,变量
count=0
。之所以为4,是因为在整个普查过程中已经检测到3个人的值高于0。我认为按原样命名
count
变量可能会让读者感到困惑


计数
变量应该检测
普查
(通过
治疗
)中
值>0且以前未检测到的行。

您可以计算一个附加变量来调整
计数
的定义方式

将以前从未检测到的
添加到代码中:

library(dplyr)

sampledata2 <- sampledata %>%
  mutate(value = as.numeric(as.character(value))) %>% 

  group_by(treatment, individual) %>% 
  arrange(treatment, individual, census) %>% 
  mutate(never_detected_before = cumsum(value>0) <= 1) %>% 

  group_by(treatment, census) %>%
  summarise(count=sum(value>0 & never_detected_before), total=n()) %>%
  group_by(treatment) %>%
  mutate(cum.sum=cumsum(count))
库(dplyr)
样本数据2%
变异(值=as.numeric(as.character(值)))%>%
分组依据(治疗,个人)%>%
安排(治疗、个人、普查)%>%
突变(以前从未检测到=累积和(值>0)%
组别(治疗,普查)%>%
汇总(计数=总和(值>0且以前从未检测到),总计=n())%>%
(治疗组)%>%
突变(累积总数=累积总数(计数))

还请注意,默认情况下,
group\u by()
会覆盖现有组,因此不需要
ungroup()

您只需计算一个附加变量来调整
计数的定义方式

将以前从未检测到的
添加到代码中:

library(dplyr)

sampledata2 <- sampledata %>%
  mutate(value = as.numeric(as.character(value))) %>% 

  group_by(treatment, individual) %>% 
  arrange(treatment, individual, census) %>% 
  mutate(never_detected_before = cumsum(value>0) <= 1) %>% 

  group_by(treatment, census) %>%
  summarise(count=sum(value>0 & never_detected_before), total=n()) %>%
  group_by(treatment) %>%
  mutate(cum.sum=cumsum(count))
库(dplyr)
样本数据2%
变异(值=as.numeric(as.character(值)))%>%
分组依据(治疗,个人)%>%
安排(治疗、个人、普查)%>%
突变(以前从未检测到=累积和(值>0)%
组别(治疗,普查)%>%
汇总(计数=总和(值>0且以前从未检测到),总计=n())%>%
(治疗组)%>%
突变(累积总数=累积总数(计数))

还要注意的是,
group_by()
默认情况下会覆盖现有的组,以便
ungroup()
是不需要的。

我不太理解您的预期输出。为什么您说治疗=H和组=4的值>0的个体数是0?应该是3,对吗?我在我的原始帖子末尾添加了一个解释。计数变量应该检测普查中的行(按治疗)值>0且以前未被检测到的。我希望这有帮助!我不太理解您的预期输出。为什么您说治疗=H且组=4的值>0的个体数为0?应该是3,对吗?我在原始帖子的末尾添加了一个解释。count变量应该检测I行n值>0且以前未检测到的普查(按处理)。我希望这有帮助!
          treatment census count total cum.sum
1         A         1      0     2       0
2         A         2      0     2       0
3         A         3      0     2       0
4         A         4      1     2       1
5         H         1      1     3       1
6         H         2      1     3       2
7         H         3      1     3       3
8         H         4      0     3       3
library(dplyr)

sampledata2 <- sampledata %>%
  mutate(value = as.numeric(as.character(value))) %>% 

  group_by(treatment, individual) %>% 
  arrange(treatment, individual, census) %>% 
  mutate(never_detected_before = cumsum(value>0) <= 1) %>% 

  group_by(treatment, census) %>%
  summarise(count=sum(value>0 & never_detected_before), total=n()) %>%
  group_by(treatment) %>%
  mutate(cum.sum=cumsum(count))