如何解决如何检查列中预先确定的数字序列在 r 中是否一一?
我有一个名为 dataframe
(5x2000141) 的 mydata
列,其中有一列名为 target_ID
(数字),用于标识单个 {{1} 的 ID
(字符) }}(日期)与结果 date
(数字)相关联。 R
对于该特定 target_ID
中的 ID
是唯一的。
备注:
-
date
在数据框中重复多次(在不同日期测量了相同的ID
)。 -
ID
对于不同的 ID 可以相同。 - 每个
dates
、target_ID
和ID
都有 1748 个条目date
,每个条目都带有关联的结果“R”。
这是我的数据框 N
的样子:
N | target_ID | ID | 日期 | R |
---|---|---|---|---|
1 | 1 | a1 | 2011-04-12 | 1 |
2 | 1 | a1 | 2011-04-12 | 1 |
3 | 1 | a1 | 2011-04-12 | 3 |
.... | .. | .. | .... | .. |
1748 | 1 | a1 | 2011-04-12 | 5 |
1749 | 2 | a2 | 2011-04-12 | 5 |
1750 | 2 | a2 | 2011-04-12 | 2 |
... | .. | .. | .... | .. |
3495 | 2 | a2 | 2011-04-12 | 2 |
3496 | 2 | a2 | 2011-04-12 | 4 |
.... | .. | .. | .... | .. |
384560 | 292 | p5 | 2012-03-09 | 9 |
384561 | 292 | p5 | 2012-03-09 | 9 |
.... | .. | .. | .... | .. |
386306 | 292 | p5 | 2012-03-09 | 1 |
386307 | 292 | p5 | 2012-03-09 | 3 |
386308 | 293 | t1 | 2012-03-09 | 3 |
.... | .. | .. | .... | .. |
我的问题如下:我正在尝试检查(例如:TRUE 或 FALSE)在每 1748 个条目的 1748 个中,“target_ID”是否遵循 1 x 1 值的升序。我使用了这个代码:mydata
但由于我没有每 1748 个条目的唯一对象 1748,结果并没有给我我假装的东西。
我也试过 mydata2 <- mydata %>% group_by(target_ID) %>% summarize(Result = all(diff(target_ID) == 1)) %>% ungroup()
但函数 mydata2 <- mydata %>% group_by(target_ID,date) %>% summarize(Result = all(diff(target_ID) == 1)) %>% ungroup()
不允许两列。
任何帮助将不胜感激:)
解决方法
一个想法:构建一个所需的序列来与您的 mydata
进行比较,例如
df <- data.frame(target_ID = rep(1:292,each = 1748))
bench.ID <- rep(1:292,each = 1748)
identical(df$target_ID,bench.ID)
,
使用相同的单列:
df <- data.frame(target_ID = rep(1:292,each = 1748))
升序测试:
is.unsorted(rle(df$target_ID)$values)
[1] FALSE # so it is ascending
测试一致的长度:
length(which(rle(df$target_ID)$lengths == 1748))
[1] 292
对 rle
的一个很好的赞美是 seqle
位于 cgwtools
包中,它提供 lenghts\values 输出但用于序列。除了确认特征(是否升序),将 rle 和 seqle 索引与 which
逻辑相结合可能会让您获得几乎唯一的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。