【发布时间】:2020-12-23 15:55:09
【问题描述】:
在数据框中,dt 如何分配随日期变化而变化的特征编号。即,在dt 中,我们有多个网格点,但两个特征在 Date 中被间隙隔开,这在该图中可以明显看出(特征 1 从 2018-06-20 到 208-06-21,特征 2 从 2018-06- 28 至 2018 年 6 月 29 日)。 。 This 答案为某种类似的问题提供了解决方案,但只针对一个点。所以我的问题是:如何计算/识别没有间隔的日期列,并为所有第一组没有间隔的日期分配说 Feature1,依此类推。
dt<-structure(list(x = c(228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 231, 232, 233, 234, 229, 230, 231, 232, 233, 234,
235, 236, 237, 238, 231, 232, 233, 234, 211, 212, 213, 214, 215,
216, 217, 218, 219, 220, 221, 211, 212, 213, 214, 215, 216, 217,
218, 219, 220, 221, 222, 211, 212, 213, 214, 215, 216, 217, 218,
219, 220, 221, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
221, 222, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222),
y = c(47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 46, 46,
46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 46, 46, 46,
46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46, 46, 46), Date = structure(c(17702,
17702, 17702, 17702, 17702, 17702, 17702, 17702, 17702, 17702,
17702, 17702, 17702, 17702, 17702, 17703, 17703, 17703, 17703,
17703, 17703, 17703, 17703, 17703, 17703, 17703, 17703, 17703,
17703, 17709, 17709, 17709, 17709, 17709, 17709, 17709, 17709,
17709, 17709, 17709, 17709, 17709, 17709, 17709, 17709, 17709,
17709, 17709, 17709, 17709, 17709, 17709, 17710, 17710, 17710,
17710, 17710, 17710, 17710, 17710, 17710, 17710, 17710, 17710,
17710, 17710, 17710, 17710, 17710, 17710, 17710, 17710, 17710,
17710, 17710, 17711, 17711, 17711, 17711, 17711, 17711, 17711,
17711, 17711, 17711, 17711, 17711, 17711, 17711, 17711, 17711,
17711, 17711, 17711, 17711, 17711, 17711, 17711), class = "Date"),
val = c(62.24, 65.06, 67.92, 70.82, 73.73, 76.53, 78.24,
78.43, 77.09, 75.11, 72.98, 63.98, 66.96, 70.01, 72.17, 61.76,
64.68, 67.59, 70.54, 73.32, 74.82, 74.69, 73.12, 70.82, 67.7,
64.64, 67.71, 70.72, 72.68, 73.58, 78.25, 81.23, 82.79, 83.07,
82.2, 80.49, 78.08, 74.86, 70.71, 65.61, 81.85, 86.05, 88.58,
89.59, 89.28, 88, 85.91, 83.3, 80.11, 75.96, 70.66, 64.46,
79.09, 84.56, 88.64, 91.44, 92.76, 92.59, 91.25, 88.95, 85.7,
81.46, 76.27, 93.98, 99.09, 102.71, 104.84, 105.43, 104.74,
102.94, 100.19, 96.49, 91.73, 85.89, 79.15, 94.49, 99.93,
103.71, 106.07, 106.84, 106.05, 103.97, 100.82, 96.62, 91.38,
85.14, 110.63, 115.91, 119.45, 121.3, 121.52, 120.44, 118.22,
114.87, 110.35, 104.58, 97.59, 89.61)), row.names = c(NA,
-98L), groups = structure(list(Date = structure(c(17702, 17703,
17709, 17710, 17711), class = "Date"), .rows = structure(list(
1:15, 16:29, 30:52, 53:75, 76:98), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
dt
plt<-ggplot(dt,aes(x=x,y=y))+
geom_tile(aes(fill=val))+
facet_wrap(~Date)
plt
【问题讨论】:
标签: r dataframe dplyr tidyverse