我还在学习很多关于如何使用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上的第一篇文章
答案 0 :(得分:2)
df <- data[grep("test", data$Trial.Type),]
grep
返回模式的每个匹配的索引,在您的情况下为"test"
。当您使用否定索引时,您有效地排除了匹配(请参阅In R, what does a negative index do?),并在它们到来时使用它们(即正索引)与仅返回匹配相同,排除其他所有内容