子集基于文本&日期列

时间:2013-07-08 13:34:55

标签: r grep subset

我有一个包含文本字段和日期字段的数据集。以下.csv格式的示例:

ID,Text,Date,BP,Person
1,This is Text!,6/24/2013,120,Bob
2,I don't like Text.,6/24/2013,114,Bob
3,Text files are stupid.,6/24/2013,310,Genny
4,"The Cezanne, for 500 please.",6/24/2013,45,Glenn
5,I enhanced my coffee with Kahlua,6/25/2013,105,Genny
6,And something else here.,6/24/2013,200,Bob

我想删除文本字段中不包含单词“[Tt] ext”&日期为2013年6月24日。所以,记录4&当其他一切都存在时,6会被丢弃。

我试过像这样对框架进行子集化:

newframe <- frame[!which(grep('[Tt]ext', frame$Text) &
                         frame$Date == '6/24/2013'), ] 

但这让我无处可去。

2 个答案:

答案 0 :(得分:2)

请您以可更改的结构提供数据。使用grepl,这应该有效:

frame[with(frame,
   !grepl('[Tt]ext', Text) & Date == '6/24/2013'),]
  ID                         Text      Date  BP Person
4  4 The Cezanne, for 500 please. 6/24/2013  45  Glenn
6  6     And something else here. 6/24/2013 200    Bob

答案 1 :(得分:0)

这是我的最终代码,使用grepl命令:

newframe <- frame[ !(!grepl('[Tt]ext', frame$Plain.Text) & frame$Date == '6/24/2013', ]

这会获取原始数据框,不包括2013年6月24日不包含“[Tt] ext”的记录。