r - 矩阵中的区间数
问题描述
我有一个包含 3523 个观察值和 92 个变量的数据框。
下面是一个有 6 个数据框的例子;观察的 24 小时记录从凌晨 4:00 开始,到凌晨 4:00 结束。
04:00 04:15 04:30 05:00 ... 04:35
1 - - - - ... -
2 2 2 2 - ... -
3 2 - - 2 ... -
4 - - 2 - ... -
5 - - - - ... -
6 - - - - ... 2
每行包含值“-”和“2”。
我想提取以“2”开头的间隔的开头和结尾
For example 2: 04:15-04:30;
3: 04:00 ; 05:00
4: 04:30
谢谢
解决方案
让我们扩展一下您的示例。在扩展的示例中,我们可以注意到2
第 1 行没有,并且还有一些更棘手的,例如第 6 行,我们有2
,然后是一个 break ( ),然后是两个s-
的序列,2
一个-
,然后又是一个2
。
04:00 04:15 04:30 05:00 05:15 05:30
1: - - - - - -
2: 2 2 2 - 2 2
3: 2 - - 2 2 2
4: - - 2 - 2 2
5: - - - - 2 2
6: 2 - 2 2 - 2
7: - - - - 2 2
8: 2 2 - 2 2 2
9: - - - - 2 2
10: 2 2 - 2 2 2
如果您输入以下内容,您可以复制它:
WorkSchedulesDay1 <- structure(list(`04:00` = c("-", "2", "2", "-", "-", "2", "-",
"2", "-", "2"), `04:15` = c("-", "2", "-", "-", "-", "-", "-",
"2", "-", "2"), `04:30` = c("-", "2", "-", "2", "-", "2", "-",
"-", "-", "-"), `05:00` = c("-", "-", "2", "-", "-", "2", "-",
"2", "-", "2"), `05:15` = c("-", "2", "2", "2", "2", "-", "2",
"2", "2", "2"), `05:30` = c("-", "2", "2", "2", "2", "2", "2",
"2", "2", "2")), row.names = c(NA, -10L), class = c("data.table",
"data.frame"))
之后,您应用代码:
WorkSchedulesDay1 <- WorkSchedulesDay1 %>%
group_by(rn = row_number()) %>%
gather(time, val, 1:6) %>%
arrange(time) %>%
mutate(tmp = cumsum(coalesce(val != lag(val), FALSE))) %>% arrange(rn) %>%
filter(!val == "-") %>%
group_by(rn, tmp) %>%
mutate(
time = case_when(
n() > 1 ~ paste(min(time), max(time), sep = " - "),
TRUE ~ time
)
) %>%
ungroup() %>% distinct(rn, tmp, time) %>%
group_by(rn) %>%
mutate(
intervals = case_when(
n() > 1 ~ paste(time, collapse = ", "),
TRUE ~ time
)
) %>% distinct(rn, intervals) %>%
write_csv("WorkSchedulesDay1.csv")
你会看到你得到的是:
rn intervals
<int> <chr>
2 04:00 - 04:30, 05:15 - 05:30
3 04:00, 05:00 - 05:30
4 04:30, 05:15 - 05:30
5 05:15 - 05:30
6 04:00, 04:30 - 05:00, 05:30
7 05:15 - 05:30
8 04:00 - 04:15, 05:00 - 05:30
9 05:15 - 05:30
10 04:00 - 04:15, 05:00 - 05:30
没有第 1 行的记录,只是因为那里只有-
。
同样,在第 2 行没有记录05:00
,只是因为那里有一个-
。
以类似的方式,04:00, 04:30 - 05:00, 05:30
第 6 行有 for ,因为有-
for04:15
和05:15
。
推荐阅读
- c++ - 为什么我的梯度下降算法不收敛?(对于逻辑回归)
- flutter - 如何使用 darkTheme 在颤动中更改主题:
- r - 如何使用 ggplot2 从条形图中的多列中绘制 3 个单个数字?
- java - 如何在maven中做多个生成源代码的主类
- python - 在不更改python中的数字的情况下将变量的类型从十六进制字符串转换为uint_32
- css - 仅使用 Typescript 编译 css 文件
- nginx - 如何配置 nginx 以尾登录 Web 浏览器
- angular - 无法将 Web API 核心与 Angular 结合起来
- angular - 即使我从 Material Angular 完全复制它,dataSource 也没有显示
我知道我的问题很奇怪,但我的问题正是标题所说的。
mat-table dataSource
即使我已经尝试使用,我也没有显示任何数据console.log("My Data : ", this.dataSaource)
。不仅如此,我的控制台很干净,没有任何错误。这是我第一次使用php - Laravel 循环过滤 uuid 字符