我是R的新手,我有关于搜索data.frame Row的问题。
我有一个专栏
msg no tmp sensor lat lon alt
1 8d4008b858c381ff633cca3d1b59 0 277102796 13020203 0.00000 0.000000 0.00
2 8d4008b858c37575032db3f2f30e 1 136520046 13020203 51.03620 5.892563 11574.78
3 8d40690958af7480e6c539db2d28 2 902340359 13020203 0.00000 0.000000 0.00
4 8d4008b858c37574612e52e5843d 3 185870171 13020203 51.03243 5.904694 11574.78
5 8d4008b858c375764f2c6ea82b0e 4 615986062 13020203 51.04392 5.867767 11574.78
6 8d4008b858c375749f2e15a34831 5 665795000 13020203 51.03387 5.900040 11574.78
7 8d4008b858c37207a9349cd60077 6 576273468 13020203 51.04486 5.864621 11574.78
8 8d40690958af847ff0c66f60ea8e 7 742755281 13020203 0.00000 0.000000 0.00
数据框很大(价值150万)。我需要检查是否存在特定 msg 的行。即,是否有一行 msg = 8d4008b858c37207a9349cd60077 (此处为第7行)。如果是,请返回 否 (此处返回6)值。如果没有这样的值,应该通知!
如何有效地处理大型数据框???
提前致谢
答案 0 :(得分:2)
尝试
library(data.table)#v1.9.5+
setDT(df1)[msg%chin% '8d4008b858c37207a9349cd60077', no]
#[1] 6
或者
setDT(df1, key='msg')[.('8d4008b858c37207a9349cd60077'), no]
#[1] 6
如果我们要检查的值不在' msg'列,它将返回NA
setDT(df1, key='msg')[.('xyz'), no]
#[1] NA
并检查NA
将使用is.na
is.na( setDT(df1, key='msg')[.('xyz'), no])
#[1] TRUE