删除R中不包含特定字符串的所有行

时间:2018-01-30 12:03:13

标签: r

我还在学习很多关于如何使用R的东西,但是我面临的一个问题是我还没有找到任何答案。

在我的数据框(“数据”)中,行是针对每个参与者以及针对给定任务的每个参与者的试验。列包含有关这些参与者的不同信息。它看起来有点像这样:

Participant    Age     Sex    Trial.Type       correct
     P01       26       0       test              1
     P01       26       0       test              0
     P01       26       0       control           1
     P02       32       1       test              1
     P02       32       1       control           1
     P02       32       1       demographics      NA

我想创建一个新的数据帧df。在此数据框中,我想删除数据$ Trial.Type列中不包含字符串“test”的所有行。

我已经看到为了删除包含特定字符串的所有行,我可以使用以下函数:

df <- data[-grep("test", data$Trial.Type),]

最好删除包含“test”字符串的所有行,但实际上我想做相反的操作,并删除除“test”字符串之外的所有行(并且以比运行更有效的方式删除每个非“测试”字符串的上述函数。)

我希望我足够清楚并遵循规则,这是我在StackOverflow上的第一篇文章

1 个答案:

答案 0 :(得分:2)

df <- data[grep("test", data$Trial.Type),]

说明

grep返回模式的每个匹配的索引,在您的情况下为"test"。当您使用否定索引时,您有效地排除了匹配(请参阅In R, what does a negative index do?),并在它们到来时使用它们(正索引)与仅返回匹配相同,排除其他所有内容