根据R中两个列ID选择的因子级别对数据进行子设置

时间:2018-08-16 17:33:55

标签: r shiny data-manipulation r-plotly

所以我有一些与此相似的数据。

f1 <- data.frame(MY = c("18-1", "18-1",
                        "18-2", "18-2","18-2","18-2","18-2",
                        "18-3", "18-3","18-3"), Factor = c(1,1,1,2,3,3,2,3,1,1), More_Data = 1:10)

f1 <- f1 %>% group_by(MY) %>% mutate(ID = row_number() - 1)


   MY    Factor More_Data    ID
   <fct>  <dbl>     <int> <dbl>
 1 18-1       1         1     0
 2 18-1       1         2     1
 3 18-2       1         3     0
 4 18-2       2         4     1
 5 18-2       3         5     2
 6 18-2       3         6     3
 7 18-2       2         7     4
 8 18-3       3         8     0
 9 18-3       1         9     1
10 18-3       1        10     2

我想基于MY选择一个ID,并在整个数据集中获取与Factor相关的所有行。

因此,如果我选择ID 1,然后它与MY 18-1相关,那么我希望通过选择因子水平来获得一个像这样的数据集。

   MY    Factor More_Data    ID
   <fct>  <dbl>     <int> <dbl>
 1 18-1       1         1     0
 2 18-1       1         2     1
 3 18-2       1         3     0
 9 18-3       1         9     1
10 18-3       1        10     2

请注意,无论我的身分和身分,我将所有因子都保留为1。

我的最佳尝试:

ID <- 1

f1[f1$Factor == f1$Factor[f1$ID == ID],]

  MY    Factor More_Data    ID
  <fct>  <dbl>     <int> <dbl>
1 18-1       1         1     0
2 18-2       1         3     0
3 18-3       1         9     1
4 18-3       1        10     2

我的真实数据集要大得多,而且这种方法甚至还没有接近。

该问题的更多背景信息: 我在shiny中以plotly作为链接点击来执行此操作。我也在逐帧执行此操作(MY因素)。通过链接的单击,您可以使用事件数据,并且事件数据可以给出框架中该点的月份和年份的所有点,然后单击一个点并将其与我创建的ID列关联,如果选择该ID,则可以关联到我想要的因素。问题是,如果绘图点与1相关,则我的代码然后不仅在该帧上查询ID中的全1,而且还将与最后1个相关的所有因素相关。

0 个答案:

没有答案