Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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_Tidyverse - Fatal编程技术网

我如何能够根据时间跟踪变化?确定条件首次出现的时间-R

我如何能够根据时间跟踪变化?确定条件首次出现的时间-R,r,tidyverse,R,Tidyverse,如果我有一个数据集,随着时间的推移有不同的情况,那么跟踪变化的最佳方法是什么 比如说,我跟踪了墙壁的颜色是否随时间变化;想想天气破坏。在我开始跟踪或跟踪它的日期或时间上,我从来都不一致。我有两行墙,因为每行代表特定时间的测量值 对于我来说,什么是识别哪些墙在某一点上发生了变化的最好方法 Wall Color Date A yellow 2019-08 A white 2019-02 A yellow 2019-05 A yellow 2

如果我有一个数据集,随着时间的推移有不同的情况,那么跟踪变化的最佳方法是什么

比如说,我跟踪了墙壁的颜色是否随时间变化;想想天气破坏。在我开始跟踪或跟踪它的日期或时间上,我从来都不一致。我有两行墙,因为每行代表特定时间的测量值

对于我来说,什么是识别哪些墙在某一点上发生了变化的最好方法

Wall   Color   Date
A      yellow  2019-08
A      white  2019-02
A      yellow    2019-05
A      yellow  2019-05   
A      white  2019-04
A      white  2019-03
A      yellow  2019-08   
B      yellow  2019-09
B      white  2019-05
B      yellow  2020-09
B      yellow  2020-05
c      white  2019-05
c      white  2018-01
c      white  2020-06
c      white  2019-02
c      white  2020-03
c      yellow  2020-09
c      white  2020-06
c      yellow  2020-05
c      white  2019-01
c      yellow  2020-1
您可以尝试:

library(dplyr)

df %>%
  tidyr::separate(Date, c('Year', 'Month'), convert = TRUE) %>%
  arrange(Wall, Year, Month) %>%
  group_by(Wall) %>%
  mutate(change = Color != lag(Color, default = first(Color)), 
         change = row_number() == which(change)[1])

#   Wall  Color   Year Month change
#   <chr> <chr>  <int> <int> <lgl> 
# 1 A     white   2019     2 FALSE 
# 2 A     white   2019     3 FALSE 
# 3 A     white   2019     4 FALSE 
# 4 A     yellow  2019     5 TRUE  
# 5 A     yellow  2019     5 FALSE 
# 6 A     yellow  2019     8 FALSE 
# 7 A     yellow  2019     8 FALSE 
# 8 B     white   2019     5 FALSE 
# 9 B     yellow  2019     9 TRUE  
#10 B     yellow  2020     5 FALSE 
# … with 11 more rows
库(dplyr)
df%>%
tidyr::单独(日期,c('Year','Month'),convert=TRUE)%>%
安排(墙、年、月)%>%
分组单位(墙)%>%
mutate(change=Color!=lag(Color,default=first(Color)),
更改=行号()==哪个(更改)[1])
#墙颜色年-月变化
#         
#1白色2019 2假
#2白色2019 3假
#3 A白色2019 4错误
#4 A黄色2019 5正确
#5黄色2019 5假
#6黄色2019 8假
#7黄色2019 8假
#8 B白色2019 5假
#9 B黄色2019 9正确
#10 B黄色2020 5假
#…还有11排

我还没有弄清楚需要什么,但他的代码有点像R代码,它展示了如何执行一些我认为您尚未掌握的操作:

> dat <- scan( text="A      yellow  2019-08
+ A      white  2019-02
+ A      yellow    2019-05
+ A      yellow  2019-05   
+ A      white  2019-04
+ A      white  2019-03
+ A      yellow  2019-08   
+ B      yellow  2019-09
+ B      white  2019-05
+ B      yellow  2020-09
+ B      yellow  2020-05
+ c      white  2019-05
+ c      white  2018-01
+ c      white  2020-06
+ c      white  2019-02
+ c      white  2020-03
+ c      yellow  2020-09
+ c      white  2020-06
+ c      yellow  2020-05
+ c      white  2019-01
+ c      yellow  2020-1", what=list(grp="",color="",mon=""))
Read 21 records
> dat=data.frame(dat)
> dat
   grp  color     mon
1    A yellow 2019-08
2    A  white 2019-02
3    A yellow 2019-05
4    A yellow 2019-05
5    A  white 2019-04
6    A  white 2019-03
7    A yellow 2019-08
8    B yellow 2019-09
9    B  white 2019-05
10   B yellow 2020-09
11   B yellow 2020-05
12   c  white 2019-05
13   c  white 2018-01
14   c  white 2020-06
15   c  white 2019-02
16   c  white 2020-03
17   c yellow 2020-09
18   c  white 2020-06
19   c yellow 2020-05
20   c  white 2019-01
21   c yellow  2020-1
> library(zoo)
> dat$mon<-as.yearmon(dat$mon)
> plot(as.numeric(dat$color)~dat$mon)
> plot(as.numeric(dat$color)~dat$mon, type="b")
> png(); 
  plot(jitter(as.numeric(dat$color)) ~dat$mon, type="b", col=as.numeric(dat$grp));
  dev.off()
dat dat=数据帧(dat) >dat 玻璃钢色板 1 A黄色2019-08 2 A白色2019-02 3 A黄色2019-05 4 A黄色2019-05 5 A白色2019-04 6 A白色2019-03 7 A黄色2019-08 8 B黄色2019-09 9 B白色2019-05 10 B黄色2020-09 11 B黄色2020-05 12 c白色2019-05 13 c白色2018-01 14 c白色2020-06 15 c白色2019-02 16 c白色2020-03 17 c黄色2020-09 18 c白色2020-06 19 c黄色2020-05 20 c白色2019-01 21 c黄色2020-1 >图书馆(动物园) >dat$mon绘图(如数字(dat$color)~dat$mon) >绘图(如.numeric(dat$color)~dat$mon,type=“b”) >png(); 绘图(抖动(作为数值(dat$color))~dat$mon,type=“b”,col=as.numeric(dat$grp)); 发展主任()


我认为,这表明您尚未对问题进行足够详细的描述,以便做出一致的响应。

部分原因在于此!我想我只希望每个“墙”都有一个真的,所以只要确定它改变的日期就可以了。因此,如果它在2020-03年变为黄色,那么只有2020-03年才会被标记为“墙”A。好的。请参阅更新的答案,以获得每个
墙的第一个
TRUE
。我想这里也应该考虑
Date
。更新的答案应该会有帮助。谢谢!出于好奇,将月份和年份分开的原因是什么?因为
2019-08
是一个字符值,而R不理解它为日期。所以我们有两种选择:1)分为月份和年份,2)转换为日期。我们可以选择任何一个选项,但我选择了1。哦,好的。是否有办法修改此项以跟踪增加/减少?在这个例子中,我知道在分类中的变化,但在连续变化的情况下。或者这需要一个完全不同的代码?