Return 两个字符 '.' 之间的字符串
Return a string between two characters '.'
我有类似于以下的列名
names(df_woe)
# [1] "A_FLAG" "woe.ABCD.binned" "woe.EFGHIJ.binned"
...
我想通过删除 "woe." 和“.binned”部分来重命名列,以便返回以下内容
names(df_woe)
# [1] "A_FLAG" "ABCD" "EFGHIJ"
...
我试过 substr(names(df_woe), start, stop)
但我不确定如何设置变量 start/stop 参数。
nam <- c("A_FLAG", "woe.ABCD.binned", "woe.EFGH.binned")
gsub("woe\.|\.binned", "", nam)
[1] "A_FLAG" "ABCD" "EFGH"
编辑:处理更复杂情况的解决方案,例如 woe..binned.binned
gsub("^woe\.|\.binned$", "", nam)
另一个解决方案,使用 stringr
包:
str_replace_all("woe.ABCD.binned", pattern = "woe.|.binned", replacement = "")
# [1] "ABCD"
另一个可能且可读的正则表达式可以是创建组和 return 在第一个点之后和第二个点之前的组,即
gsub("(.*\.)(.*)\..+", "\2", names(df_woe))
#[1] "A_FLAG" "ABCD" "EFGH"
我有类似于以下的列名
names(df_woe)
# [1] "A_FLAG" "woe.ABCD.binned" "woe.EFGHIJ.binned"
...
我想通过删除 "woe." 和“.binned”部分来重命名列,以便返回以下内容
names(df_woe)
# [1] "A_FLAG" "ABCD" "EFGHIJ"
...
我试过 substr(names(df_woe), start, stop)
但我不确定如何设置变量 start/stop 参数。
nam <- c("A_FLAG", "woe.ABCD.binned", "woe.EFGH.binned")
gsub("woe\.|\.binned", "", nam)
[1] "A_FLAG" "ABCD" "EFGH"
编辑:处理更复杂情况的解决方案,例如 woe..binned.binned
gsub("^woe\.|\.binned$", "", nam)
另一个解决方案,使用 stringr
包:
str_replace_all("woe.ABCD.binned", pattern = "woe.|.binned", replacement = "")
# [1] "ABCD"
另一个可能且可读的正则表达式可以是创建组和 return 在第一个点之后和第二个点之前的组,即
gsub("(.*\.)(.*)\..+", "\2", names(df_woe))
#[1] "A_FLAG" "ABCD" "EFGH"