作为输入,您的函数应采用0和1的向量; 每次在数据中看到序列为1时,都需要将子代数增加1; 注意两个连续的1序列,它们之间的差小于5(即,如果它们之间的差小于5个0,则它是同一个孩子,而不是新孩子); 为了帮助您,社交规划师提供了一些示例,说明您的函数应返回什么:
#Input: c(1,1,1,1,0,0,0,0)
#Output: 1 1 1 1 1 1 1 1
#Input: c(0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1)
#Output: 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2
#Input: c(0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,1)
#Output: 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
函数,可能会有所帮助:
diff()
cumsum()
which()
rle()
我不太了解如何解决这个问题,我对此的想法是在求和后使用diff函数,因为这将帮助我维持连续的1s,但在这种情况下,我将丢失向量的长度(显然#rle$lenght
似乎也可以帮助我检测长度为5或更大的间隙以将1s变为2s。抱歉,我只是一个初学者
答案 0 :(得分:0)
我利用r中的哪个函数(https://www.r-bloggers.com/which-function-in-r/)和游程长度编码(http://www.cookbook-r.com/Manipulating_data/Finding_sequences_of_identical_values/)。这是我的尝试:
Cake.AWS.ElasticBeanstalk