在R数据帧中搜索具有字符串值的行

时间:2015-06-13 15:04:54

标签: r search

我是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)值。如果没有这样的值,应该通知!

如何有效地处理大型数据框???

提前致谢

1 个答案:

答案 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