Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 创建一个检测器使用情况表,其中包含列的场合_R_Rmark - Fatal编程技术网

R 创建一个检测器使用情况表,其中包含列的场合

R 创建一个检测器使用情况表,其中包含列的场合,r,rmark,R,Rmark,我需要创建一个检测器使用表,其中行是单个检测器,列是它们都处于活动状态的完整日期范围。在该表中,1表示探测器在给定日期处于活动状态,0表示探测器处于非活动状态。圈闭在“部位”(如部位:A1、B1、C1)划定的组中被激活。列中的连续日期范围需要从第一个陷阱激活的第一天开始,到最后一个陷阱激活的最后一天结束 目前,我有以下数据表要处理 场地使用表: > site.use.df site first last 1: B1 1/11/2017 1/12/2017 2

我需要创建一个检测器使用表,其中行是单个检测器,列是它们都处于活动状态的完整日期范围。在该表中,1表示探测器在给定日期处于活动状态,0表示探测器处于非活动状态。圈闭在“部位”(如部位:A1、B1、C1)划定的组中被激活。列中的连续日期范围需要从第一个陷阱激活的第一天开始,到最后一个陷阱激活的最后一天结束

目前,我有以下数据表要处理

场地使用表:

  > site.use.df
   site     first      last
1:   B1 1/11/2017 1/12/2017
2:   B1 1/15/2017 1/16/2017
3:   P1  1/7/2017  1/8/2017
4:   P1 1/13/2017 1/14/2017
5:   R1 1/10/2017 1/11/2017
6:   R1 1/15/2017 1/16/2017
陷阱ID表:

> trapID.df
    trapID site
 1:    154   P1
 2:    155   P1
 3:    156   P1
 4:    157   P1
 5:    158   P1
 6:    304   R1
 7:    305   R1
 8:    306   R1
 9:    307   R1
10:    308   R1
11:      1   B1
12:      2   B1
13:      3   B1
14:      4   B1
15:      5   B1
理想情况下,完整日期范围将取自现场使用表,而不是手动输入

我正在寻找的最终产品如下所示:

 > detector.table
    trapID site 1/7/2017 1/8/2017 1/9/2017 1/10/2017 1/11/2017 1/12/2017 1/13/2017 1/14/2017 1/15/2017 1/16/2017
 1:      1   B1        0        0        0         0         1         1         0         0         1         1
 2:      2   B1        0        0        0         0         1         1         0         0         1         1
 3:      3   B1        0        0        0         0         1         1         0         0         1         1
 4:      4   B1        0        0        0         0         1         1         0         0         1         1
 5:      5   B1        0        0        0         0         1         1         0         0         1         1
 6:    154   P1        1        1        0         0         0         0         1         1         0         0
 7:    155   P1        1        1        0         0         0         0         1         1         0         0
 8:    156   P1        1        1        0         0         0         0         1         1         0         0
 9:    157   P1        1        1        0         0         0         0         1         1         0         0
10:    158   P1        1        1        0         0         0         0         1         1         0         0
11:    304   R1        0        0        0         1         1         0         0         0         1         1
12:    305   R1        0        0        0         1         1         0         0         0         1         1
13:    306   R1        0        0        0         1         1         0         0         0         1         1
14:    307   R1        0        0        0         1         1         0         0         0         1         1
15:    308   R1        0        0        0         1         1         0         0         0         1         1

如果我理解正确,使用
tidyverse
我们可以在
first
last
列之间创建一个日期序列,并以宽格式获取数据,创建1/0列

library(tidyverse)

temp <- trapID.df %>%
          left_join(site.use.df) %>%
          mutate_at(vars(first, last), mdy) %>%
          mutate(date = map2(first, last, seq, by = "1 day")) %>%
          unnest(date) %>%
          select(-first, -last) %>%
          mutate(present = 1) %>%
          group_by(trapID, site) %>%
          complete(date = seq(min(date), max(date), by = "1 day"), 
                          fill = list(present = 0)) %>%
          pivot_wider(names_from = date, values_from = present, 
                      values_fill = list(present = 0))


#If you need data sorted by date
temp[c(names(temp)[1:2], sort(names(temp)[-(1:2)]))] 


#   trapID site  `2017-01-07` `2017-01-08` `2017-01-09` `2017-01-10` `2017-01-11`
#    <int> <fct>        <dbl>        <dbl>        <dbl>        <dbl>        <dbl>
# 1      1 B1               0            0            0            0            1
# 2      2 B1               0            0            0            0            1
# 3      3 B1               0            0            0            0            1
# 4      4 B1               0            0            0            0            1
# 5      5 B1               0            0            0            0            1
# 6    154 P1               1            1            0            0            0
# 7    155 P1               1            1            0            0            0
# 8    156 P1               1            1            0            0            0
# 9    157 P1               1            1            0            0            0
#10    158 P1               1            1            0            0            0
#11    304 R1               0            0            0            1            1
#12    305 R1               0            0            0            1            1
#13    306 R1               0            0            0            1            1
#14    307 R1               0            0            0            1            1
#15    308 R1               0            0            0            1            1
# … with 5 more variables: `2017-01-12` <dbl>, `2017-01-13` <dbl>, 
#   `2017-01-14` <dbl>, `2017-01-15` <dbl>, `2017-01-16` <dbl>
库(tidyverse)
温度%
左联合(site.use.df)%>%
在(变量(第一个,最后一个),mdy)%>
突变(日期=map2(第一个、最后一个、顺序,按=“1天”))%>%
unnest(日期)%%>%
选择(-first,-last)%%>%
突变(存在=1)%>%
分组依据(trapID,站点)%>%
完成(日期=序号(最短(日期),最长(日期),截止日期=“1天”),
填充=列表(当前=0))%>%
透视图(名称从=日期,值从=当前,
值\填充=列表(当前=0))
#如果需要按日期排序的数据
温度[c(名称(温度)[1:2],排序(名称(温度)[-(1:2)])]
#trapID站点`2017-01-07``2017-01-08``2017-01-09``2017-01-10``2017-01-11`
#                                             
#1 B1 0 0 0 1
#2 B1 0 0 0 1
#3 3 B1 0 0 0 1
#4 4 B1 0 0 0 1
#5 B1 0 0 0 1
#6154 P1 110 0 0 0
#7155 P1 10100
#8156 P1 10100
#9157 P1 10100
#10158 P1 10100
#11304 r1001
#12305R1 0 0 1 1
#13 306 R1 0 0 1 1
#14307 R1 0 0 1 1
#15308 R1 0 0 1 1
#…还有5个变量:`2017-01-12`、`2017-01-13`,
#   `2017-01-14` , `2017-01-15` , `2017-01-16` 

如果我理解正确,使用
tidyverse
我们可以在
first
last
列之间创建一个日期序列,并以宽格式获取数据,创建1/0列

library(tidyverse)

temp <- trapID.df %>%
          left_join(site.use.df) %>%
          mutate_at(vars(first, last), mdy) %>%
          mutate(date = map2(first, last, seq, by = "1 day")) %>%
          unnest(date) %>%
          select(-first, -last) %>%
          mutate(present = 1) %>%
          group_by(trapID, site) %>%
          complete(date = seq(min(date), max(date), by = "1 day"), 
                          fill = list(present = 0)) %>%
          pivot_wider(names_from = date, values_from = present, 
                      values_fill = list(present = 0))


#If you need data sorted by date
temp[c(names(temp)[1:2], sort(names(temp)[-(1:2)]))] 


#   trapID site  `2017-01-07` `2017-01-08` `2017-01-09` `2017-01-10` `2017-01-11`
#    <int> <fct>        <dbl>        <dbl>        <dbl>        <dbl>        <dbl>
# 1      1 B1               0            0            0            0            1
# 2      2 B1               0            0            0            0            1
# 3      3 B1               0            0            0            0            1
# 4      4 B1               0            0            0            0            1
# 5      5 B1               0            0            0            0            1
# 6    154 P1               1            1            0            0            0
# 7    155 P1               1            1            0            0            0
# 8    156 P1               1            1            0            0            0
# 9    157 P1               1            1            0            0            0
#10    158 P1               1            1            0            0            0
#11    304 R1               0            0            0            1            1
#12    305 R1               0            0            0            1            1
#13    306 R1               0            0            0            1            1
#14    307 R1               0            0            0            1            1
#15    308 R1               0            0            0            1            1
# … with 5 more variables: `2017-01-12` <dbl>, `2017-01-13` <dbl>, 
#   `2017-01-14` <dbl>, `2017-01-15` <dbl>, `2017-01-16` <dbl>
库(tidyverse)
温度%
左联合(site.use.df)%>%
在(变量(第一个,最后一个),mdy)%>
突变(日期=map2(第一个、最后一个、顺序,按=“1天”))%>%
unnest(日期)%%>%
选择(-first,-last)%%>%
突变(存在=1)%>%
分组依据(trapID,站点)%>%
完成(日期=序号(最短(日期),最长(日期),截止日期=“1天”),
填充=列表(当前=0))%>%
透视图(名称从=日期,值从=当前,
值\填充=列表(当前=0))
#如果需要按日期排序的数据
温度[c(名称(温度)[1:2],排序(名称(温度)[-(1:2)])]
#trapID站点`2017-01-07``2017-01-08``2017-01-09``2017-01-10``2017-01-11`
#                                             
#1 B1 0 0 0 1
#2 B1 0 0 0 1
#3 3 B1 0 0 0 1
#4 4 B1 0 0 0 1
#5 B1 0 0 0 1
#6154 P1 110 0 0 0
#7155 P1 10100
#8156 P1 10100
#9157 P1 10100
#10158 P1 10100
#11304 r1001
#12305R1 0 0 1 1
#13 306 R1 0 0 1 1
#14307 R1 0 0 1 1
#15308 R1 0 0 1 1
#…还有5个变量:`2017-01-12`、`2017-01-13`,
#   `2017-01-14` , `2017-01-15` , `2017-01-16` 

你能清楚你的问题是什么吗?另外,你能给我们提供样品数据和你想要的输出吗?对不起,我已经编辑了它,让它更清楚。你能清楚你的问题是什么吗?另外,你能给我们提供样本数据和你想要的输出吗?对不起,我已经编辑了它以使其更清晰。谢谢Ronak,我已经编辑了问题/数据示例以使其更有意义。你的答案几乎就在那里,然而,我要找的是陷阱活动表,而不是站点活动表