我有一个数据框列,如下所示:
>df[,2]
A
10
10.1
10a
10a.1
12a.6
13b
17
3c.3
除了列大约70,000行。我想查找并删除仅出现在列中因子末尾的所有小数。
基本上,我如何正确实现'grep()'或'gsub()'函数?
答案 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)