在数据框的列中使用gsub或grep

时间:2013-12-12 23:28:28

标签: r grep dataframe gsub

我有一个数据框列,如下所示:

>df[,2]

A    
10
10.1
10a
10a.1
12a.6
13b
17
3c.3

除了列大约70,000行。我想查找并删除仅出现在列中因子末尾的所有小数。

基本上,我如何正确实现'grep()'或'gsub()'函数?

2 个答案:

答案 0 :(得分:5)

Doneskis:

x <- c("10","10.1","10a","10a.1","12a.6","13b","17","3c.3")
gsub("\\..+$","",x)
#[1] "10"  "10"  "10a" "10a" "12a" "13b" "17"  "3c" 

要给出一些解释:正则表达式中的.表示“任何字符”,因此要在文本(".")中搜索实际句点/点,您需要使用{{1}来转义它} - 即\\

因此,\\.调用会找到句点gsub,后跟任何字符\\.的任何字符或重复,后跟字符串.+的结尾

答案 1 :(得分:0)

原始答案(未选中)

unlist(strsplit(df[,2], split='.', fixed=TRUE))[[1]]

根据@thelatemail

的建议编辑
sapply(strsplit(x,"\\."),"[",1)