我仍在学习有关如何使用 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。在此数据框中,我想删除 data$Trial.Type 列中不包含字符串“test”的所有行。
我已经看到,为了删除包含特定字符串的所有行,我可以使用以下函数:
df <- data[-grep("test", data$Trial.Type),]
删除所有包含“测试”字符串的行非常有效,但实际上我想做相反的事情,并删除除带有“测试”字符串之外的所有行(并且比运行上面的函数更有效)对于每个非“测试”字符串)。
我希望我足够清楚并遵守规则,这是我在 StackOverflow 上的第一篇文章
最佳答案
df <- data[grep("test", data$Trial.Type),]
解释
grep
返回模式的每个匹配项的索引,在您的情况下 "test"
.当您使用负索引时,您可以有效地排除匹配项(请参阅 In R, what does a negative index do? ),并且在它们出现时使用它们(即正索引)与仅返回匹配项相同,排除其他所有内容。
关于删除 R 中不包含特定字符串的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48521027/