R 用局部最小值和全局最大值查找范围内的所有数字
我有一个dataframeR 用局部最小值和全局最大值查找范围内的所有数字,r,range,data.table,dplyr,R,Range,Data.table,Dplyr,我有一个dataframetestData,它由许多唯一的id组成。我的目标是确定id是否包含month、yday和week范围内的所有可能整数,其中min是每个id的第一个值,max是整个列范围内的最大值 请注意,这与 换句话说,如果id的所有可能值都在month的范围内,那么它应该收到t。例如,在month下,其中id=1,整个列的最小值为2,最大值为5,因此1应接收到true,因为存在值2、3、4和5。但是,如果id=2,则只有值1、2、4和5,因此跳过了3,因此2应接收f 到目前为止,我
testData
,它由许多唯一的id组成。我的目标是确定id是否包含month
、yday
和week
范围内的所有可能整数,其中min是每个id的第一个值,max是整个列范围内的最大值
请注意,这与
换句话说,如果id
的所有可能值都在month
的范围内,那么它应该收到t
。例如,在month
下,其中id
=1,整个列的最小值为2,最大值为5,因此1应接收到true,因为存在值2、3、4和5。但是,如果id
=2,则只有值1、2、4和5,因此跳过了3,因此2应接收f
到目前为止,我已经有了一个公式,可以获取整个列范围内的所有值(但不是每个id
的最小值):
最后,输出应如下所示:
> output
id month yday week
1 1 t f t
2 2 f f f
3 3 f f t
4 4 f f f
5 5 t f t
使用
dplyr
可以按id
进行分组,然后只需检查范围的所有元素是否都在每个组的值中。请注意,min(month)
给出了分组的id
变量的最小值,但max(testData$month)
给出了整个列表的最大值
library(dplyr)
tD2 <- testData %>% group_by(id) %>%
summarise(month=all(min(month):max(testData$month) %in% month),
yday=all(min(yday):max(testData$yday) %in% yday),
week=all(min(week):max(testData$week) %in% week))
tD2
# A tibble: 5 × 4
id month yday week
<int> <lgl> <lgl> <lgl>
1 1 TRUE FALSE TRUE
2 2 FALSE FALSE FALSE
3 3 FALSE FALSE TRUE
4 4 FALSE FALSE FALSE
5 5 TRUE FALSE TRUE
库(dplyr)
tD2%分组单位(id)%>%
总结(月=全部(最小(月):最大(测试数据$month)%月百分比),
yday=全部(最小值(yday):最大值(测试数据$yday)%in%yday),
周=全部(最小值(周):最大值(testData$week)%in%周)
tD2
#一个tibble:5×4
id月/日/周
1对错对
2假假假假
假假假真
假假假假
5对错对
这是一个新问题,不是重复的问题。请仔细阅读
> output
id month yday week
1 1 t f t
2 2 f f f
3 3 f f t
4 4 f f f
5 5 t f t
library(dplyr)
tD2 <- testData %>% group_by(id) %>%
summarise(month=all(min(month):max(testData$month) %in% month),
yday=all(min(yday):max(testData$yday) %in% yday),
week=all(min(week):max(testData$week) %in% week))
tD2
# A tibble: 5 × 4
id month yday week
<int> <lgl> <lgl> <lgl>
1 1 TRUE FALSE TRUE
2 2 FALSE FALSE FALSE
3 3 FALSE FALSE TRUE
4 4 FALSE FALSE FALSE
5 5 TRUE FALSE TRUE