如果城市列单元格为空,则R中的Grep将删除整行

时间:2011-12-15 23:35:35

标签: r grep dataframe

我有以下R dataframe mydata

                       session      first     last            city
1  9cf571c8faa67cad2aa9ff41f3a26e38    cat+rat   biddix          fresno
2  e30f853d4e54604fd62858badb68113a      caleb     amos                
3  2ad41134cc285bcc06892fd68a471cd7 daniel+joe  folkers                
4  2ad41134cc285bcc06892fd68a471cd7 daniel+joe  folkers                
5  63a5e839510a647c1ff3b8aed684c2a5    charles   pierce           flint
6  691df47f2df12f14f000f9a17d1cc40e          j    franz prescott+valley
7  691df47f2df12f14f000f9a17d1cc40e          j    franz prescott+valley
8  b3a1476aa37ae4b799495256324a8d3d   carr%ie% mascorro            brea
9  bd9f1404b313415e7e7b8769376d2705       fred  morales       las+vegas
10 b50a610292803dc302f24ae507ea853a     aurora      lee                
11 fb74940e6feb0dc61a1b4d09fcbbcb37     andrew    price       yorkville

删除city为空的所有行的正确代码是什么?

2 个答案:

答案 0 :(得分:7)

也许

subset(mydata,city!="")

?这假设city列的存储方式使得空格为零长度字符串。如果它们可能是空白,那么就像

grep("^[[:space:]]*$",mydata$city,invert=TRUE)

会找到你想要的元素。由于grepl没有invert参数,您可以使用(编辑:感谢@ JoshO'Brien)

subset(mydata,!grepl("^[[:space:]]*$",city))

(没有给出可复制的例子,所以这些都没有经过测试。)

答案 1 :(得分:2)

或尝试:

mydata[which(mydata$city!=""),]

如果你想进行进一步的操作,可能会更灵活一些。