R 检查连续日期内的两个值是否相同
比如说我有一个像tibble一样的R 检查连续日期内的两个值是否相同,r,dataframe,dplyr,lubridate,tibble,R,Dataframe,Dplyr,Lubridate,Tibble,比如说我有一个像tibble一样的 df <- tribble( ~date, ~place, ~wthr, #------------/-----/-------- "2017-05-06","NY","sun", "2017-05-06","CA","cloud", "2017-05-07","NY&quo
df <- tribble(
~date, ~place, ~wthr,
#------------/-----/--------
"2017-05-06","NY","sun",
"2017-05-06","CA","cloud",
"2017-05-07","NY","sun",
"2017-05-07","CA","rain",
"2017-05-08","NY","cloud",
"2017-05-08","CA","rain",
"2017-05-09","NY","cloud",
"2017-05-09","CA",NA,
"2017-05-10","NY","cloud",
"2017-05-10","CA","rain"
)
有什么好办法吗?要得到一个逻辑列,在按
place
分组后,在使用lag
之前检查wthr
值是否等于row。我为日期添加了排列
,以确保按时间顺序排列
library(dplyr)
df %>%
arrange(date) %>%
group_by(place) %>%
mutate(same = wthr == lag(wthr, default = NA))
编辑:如果要确保日期是连续的(相隔1天),可以包含一个ifelse
,以查看date
和lag(date)
之间的差异是否为1。如果相隔不到1天,则可以将其编码为NA
注意:另外,请确保您的日期是日期
:
df$date <- as.Date(df$date)
df %>%
arrange(date) %>%
group_by(place) %>%
mutate(same = ifelse(
date - lag(date) == 1,
wthr == lag(wthr, default = NA),
NA))
df$date%
安排(日期)%>%
组别(地点)%>%
变异(相同=如果其他(
日期-滞后(日期)=1,
wthr==滞后(wthr,默认值=NA),
NA))
输出
date place wthr same
<chr> <chr> <chr> <lgl>
1 2017-05-06 NY sun NA
2 2017-05-06 CA cloud NA
3 2017-05-07 NY sun TRUE
4 2017-05-07 CA rain FALSE
5 2017-05-08 NY cloud FALSE
6 2017-05-08 CA rain TRUE
7 2017-05-09 NY cloud TRUE
8 2017-05-09 CA NA NA
9 2017-05-10 NY cloud TRUE
10 2017-05-10 CA rain NA
日期地点相同
1 2017-05-06纽约州孙娜
2 2017-05-06加利福尼亚州
3 2017-05-07纽约太阳报真实版
4 2017-05-07 CA rain FALSE
5 2017-05-08纽约云假
6 2017-05-08加利福尼亚州真实降雨
7 2017-05-09纽约云真实
8 2017-05-09加利福尼亚州
9 2017-05-10纽约云真实
10 2017-05-10加利福尼亚州
如果整个第8行缺失(即“2017-05-09”、“纽约”、“云”的下一行是“2017-05-10”、“纽约”、“云”
),该怎么办?是否有办法使最后一行的值与NA
值相同,而不是TRUE
?@hmje请参见编辑后的答案。您可以检查以确保两行间隔1天。如果不是,则编码为NA
。那对你有用吗?
date place wthr same
<chr> <chr> <chr> <lgl>
1 2017-05-06 NY sun NA
2 2017-05-06 CA cloud NA
3 2017-05-07 NY sun TRUE
4 2017-05-07 CA rain FALSE
5 2017-05-08 NY cloud FALSE
6 2017-05-08 CA rain TRUE
7 2017-05-09 NY cloud TRUE
8 2017-05-09 CA NA NA
9 2017-05-10 NY cloud TRUE
10 2017-05-10 CA rain NA