【发布时间】:2018-02-14 13:09:47
【问题描述】:
这个问题之前好像没有放在这里。
我想找出连续 6 个小时得 1 分的科目数。 并非每小时都对科目进行评分,因此如果缺少一小时,则小时数不连续,并且该 6 小时期间的输出应为 NA。 分配 NA 的原因是我们不知道受试者在缺课时间的得分情况。此题可用于计算连续命中,但仅在有受试者参与时才计算。
我的数据框如下所示:
ID<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2)
hour<-c(1,2,3,7,8,9,10,11,12,17,18,19,1,2,3,4,5,6,8,9,15)
A<-c(0,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1)
df<-data.frame(ID,hour,A)
我曾尝试使用 rle 函数(我确信它可能),但我无法让它同时满足小时和 ID 的条件。 输出是这样的:
ID<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2)
hour<-c(1,2,3,7,8,9,10,11,12,17,18,19,1,2,3,4,5,6,8,9,15)
A<-c(0,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1)
six<-c(NA,NA,NA,0,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,1,NA,NA,NA)
df<-data.frame(ID,hour,A,six)
提前谢谢你。
我认为我提供的原始数据集太小,无法使解决方案更具普遍性。
我刚刚用这个数据集尝试了代码,发现这会导致错误的结果。
ID<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4)
hour<-c(1,2,3,7,8,9,10,12,13,17,18,19,1,2,3,4,5,6,8,9,15,1:23,27,28,29,30,31)
A<-c(0,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,rep(1,28))
df<-data.frame(ID,hour,A)
对于新数据集,输出应为:
ID<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4)
hour<-c(1,2,3,7,8,9,10,12,13,17,18,19,1,2,3,4,5,6,8,9,15,1:23,27,28,29,30,31)
A<-c(0,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,rep(1,28))
six<-c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)
df<-data.frame(ID,hour,A,six)
【问题讨论】:
-
不清楚分配 NA 的原因。为什么以及何时分配 NA?我建议你重新表述你的问题,这样它也可以概括
-
示例数据选错了,但是问题很好!
-
@missuse 我已经发布了输出。当我查看您的解决方案时,它看起来是正确的,直到主题 4 第 27 小时,它错过了第 23 小时和第 27 小时之间的差距。
-
你是对的!现在看起来是正确的。谢谢你。这是很棒的东西。
标签: r