【发布时间】:2020-07-12 14:11:25
【问题描述】:
假设我有一个这样的 data.table:
set.seed(10)
data.table(group = rep(c("a","b","c"), each=5), date = rep(1:5,3), value = sample(c(95:105,""),15, replace=TRUE))
在每个组中,在值列中,我想检查(简单地说)是否有一个“”(空字符)或一组空字符,它前面和后面都有一个值.
所以,这很好:“”、95,103 等......(空字符在组中的第一个),但下面的模式是 我想检测的示例“缺失数据”:
95, "", 103,...(中间有空字符)
95, "","", 103...(中间几个空字符)
95, 103, ""(末尾为空)
所以,在下面的输出中,我可以得到行/组 A,如果有很多组,我应该得到所有组(或行)
group date value
1: a 1 105
2: a 2 103
3: a 3 104
4: a 4
5: a 5 101
6: b 1 102
7: b 2 100
8: b 3 101
9: b 4 97
10: b 5 102
11: c 1 104
12: c 2 101
13: c 3 104
14: c 4 96
15: c 5 102
编辑: 我需要做的是选择具有错误模式的行(所以中间或末尾的空字符串),以便能够检测是否有任何错误在一个大数据集中。因此,在我的示例中的表格中,所需的输出将是第 4 行,因为它有一个“缺失值”(值之间的空字符)
group date value
1: a 4
(如果有更多不需要的行,我当然希望全部获得)
【问题讨论】:
-
您的数据中没有
"" -
您想要的输出是什么,符合条件的行还是不符合条件的行?
-
@Edward 这样做的(例如,我想检查大型数据集中是否存在间隙,理想情况下应该为零)
-
@arg0naut91 第 4 行?否则只需使用不同的种子号...
标签: r database string data.table pattern-matching