根据起始字母和列中的星号进行筛选
问题描述:
我有一个很大的数据框,有22列。我想根据第二列中的值进行过滤,因此如果该值不以“X”开头,我想删除该行。此外,如果第二列中的此值包含星号,我想删除该行。根据起始字母和列中的星号进行筛选
test <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
secondcolumn <- c("Xidfhsfd*isjdf", "Hsuhdfskdh", "Xwidfsoid", "X*sdkfjjhsd", "Xkdsfhsd", "Uskesfudhsk", "Sdfukhsdiu", "Osdfihsdoiuh", "Xsodifdsifj")
othercolumn <- c(3, 5, 7,2, 5, 8, 3, 0, 5)
df <- as.data.frame(test, secondcolumn, othercolumn)
这将如何完成?在这个例子中,我想删除第1,2,4,6,7,8和9行。
谢谢!
答
另一种选择是在字符串的开头(^
),其次是不在一个或多个字符匹配“X”的*
([^*]+
)直到字符串的结尾($
)以得到数字索引和基于该数字索引的子集行
df[grep("^X[^*]+$", df$secondcolumn),]
# test secondcolumn othercolumn
#3 3 Xwidfsoid 7
#5 5 Xkdsfhsd 5
#9 9 Xsodifdsifj 5
我可能一直不清楚,但我希望它以X开头。有些值是NA,所以我认为从X开始它会自动删除它们。这将如何完成? –