我在R中有一个数据集,其中包含一百多个字符。
我正在尝试删除所有以“。”开头和结尾的行。时期字符。 我将首先将这些行设置为空白,然后通过将它们写入.csv文件来删除它们。问题出在第一部分,我如何首先将它们设置为空白?
下面是我尝试过的gsub命令,但对任何行都不做任何操作。
#remove all periods followed by a space
data$text<- gsub('^([.][.])$', '', data$text)
data$text <- gsub('[.]*$',"",data$text) # with over a hundred rows
Value text
1 male occupied
2 male occupied
3 female occupied
4 . . . .
5 male occupied
6 . . .
7 female occupied
8 . .
我的预期输出:
Value text
1 male occupied
2 male occupied
3 female occupied
5 male occupied
7 female occupied
如何在R中做到这一点? gsub可以走吗?
答案 0 :(得分:1)
gsub
是全局替换,用于从字符串中删除/替换子字符串。根据{{1}}
两个* sub函数的区别仅在于,sub仅替换模式的第一个匹配项,而gsub替换所有的匹配项。
这里,目的是在向量中找到模式的位置,并删除向量或列中的那些元素(以从data.frame中删除行)。 ?gsub
文档说
grep,grepl,regexpr,gregexpr和regexec在字符向量的每个元素内搜索与参数模式的匹配项:它们在结果的格式和详细程度上有所不同。
因此,我们得到数字索引(grep
)或逻辑向量(grep
)的输出,并将ddata子集化
grepl
在这里,我们匹配一个df1[!grepl("^\\.|\\.$", df1$text),]
(.
是任何字符的元字符-为了获得字面意思,可以转义(.
)或将其放在方括号({ {1}}或使用\\
-这里有[.]
,因此我们不能在开始(fixed = TRUE
)或结束(|
)处使用该选项以^
返回字符串的逻辑向量,取反($
),以使TRUE-> FALSE和FALSE-> TRUE并使用它来过滤行。