我有一个数据框" df"并希望应用if / else条件为整列插入小数" A"
A B
E0505 123
890 43
4505 56
适用规则:
最终输出:
A B
E050.5 123
890 43
450.5 56
我试过这个,但我不知道如何包含行以E开头的条件。
ifelse(str_length(df$A)>3, as.character(paste0(substring(df$A, 1, 3),".", substring(df$A, 4))), as.character(df$A))
答案 0 :(得分:3)
将sub
与正则表达式一起使用,您可以这样做:
df$A <- sub("((?:^E.|^[^E]).{2})(.+)", "\\1.\\2", df$A)
df
# A B
#1 E050.5 123
#2 890 43
#3 450.5 56
((?:^E.|^[^E]).{2})(.+)
匹配字符串:
E
开头,后跟4个或更多字符,在这种情况下捕获前4个字符,其余字符为两个单独的组,并在其间插入.
; E
开头,而是有4个或更多字符,在这种情况下捕获前3个字符,其余字符为两个单独的组,并在其间插入.
; 以E
开头并且总共少于5个字符或不以E
开头并且总共少于4个字符的字符串不匹配,并且不会被修改。
如果忽略大小写:df$A <- sub("((?:^[Ee].|^[^Ee]).{2})(.+)", "\\1.\\2", df$A)
。