如果 Column 在值的末尾包含“-”,则删除末尾的“-” - sqldf
If Column contains "-" at the end of a value, remove the "-" at the end - sqldf
我有一个如下所示的数据框:
ColA ColB
djdn- 3
dn-dn 5
ndmc- 8
nd-nd-md 9
预期输出:
ColA ColB New_Col
djdn- 3 djdn
dn-dn 5 dn-dn
ndmc- 8 ndmc
nd-nd-md 9 nd-nd-md
使用sqldf,我想删除值末尾的“-”(如果它存在于末尾)。
这是我尝试的代码:
library(sqldf)
df_new<- sqldf("select CASE(RIGHT([ColA], 1) = '-', LEFT([ColA], LEN([ColA])-1),
[ColA]) [New_Col] from df")
Error in result_create(conn@ptr, statement) : near "(": syntax error
要匹配“值末尾包含‘-’”,请使用(我假设是 PostgreSQL)a pattern match:
SELECT
col_a
FROM df
WHERE (col_a LIKE '%-')
然后,要获取不带最终字符(您现在知道是“-”字符)的值,请使用 string manipulation function:
SELECT
left(col_a, -1) AS col_a_truncated
FROM df
WHERE (col_a LIKE '%-')
我想你在找 rtrim
library(sqldf)
df_new<- sqldf("select ColB,rtrim(ColA,'-') as ColA from df")
ColB ColA
1 3 djdn
2 5 dn-dn
3 8 ndmc
4 9 nd-nd-md
虽然使用 rtrim
似乎更容易,但这里有一个使用 substr
的解决方案:
sqldf使用SQLite,没有RIGHT
或LEFT
函数,所以用SUBSTR
函数代替,LEN
函数是LENGTH
.
library(sqldf)
df_new <- sqldf("select df.*,
CASE
WHEN substr(ColA, length(ColA),1) = '-' THEN substr(ColA, 1, length(ColA)-1)
ELSE ColA
END AS New_Col from df")
我有一个如下所示的数据框:
ColA ColB
djdn- 3
dn-dn 5
ndmc- 8
nd-nd-md 9
预期输出:
ColA ColB New_Col
djdn- 3 djdn
dn-dn 5 dn-dn
ndmc- 8 ndmc
nd-nd-md 9 nd-nd-md
使用sqldf,我想删除值末尾的“-”(如果它存在于末尾)。
这是我尝试的代码:
library(sqldf)
df_new<- sqldf("select CASE(RIGHT([ColA], 1) = '-', LEFT([ColA], LEN([ColA])-1),
[ColA]) [New_Col] from df")
Error in result_create(conn@ptr, statement) : near "(": syntax error
要匹配“值末尾包含‘-’”,请使用(我假设是 PostgreSQL)a pattern match:
SELECT
col_a
FROM df
WHERE (col_a LIKE '%-')
然后,要获取不带最终字符(您现在知道是“-”字符)的值,请使用 string manipulation function:
SELECT
left(col_a, -1) AS col_a_truncated
FROM df
WHERE (col_a LIKE '%-')
我想你在找 rtrim
library(sqldf)
df_new<- sqldf("select ColB,rtrim(ColA,'-') as ColA from df")
ColB ColA
1 3 djdn
2 5 dn-dn
3 8 ndmc
4 9 nd-nd-md
虽然使用 rtrim
似乎更容易,但这里有一个使用 substr
的解决方案:
sqldf使用SQLite,没有RIGHT
或LEFT
函数,所以用SUBSTR
函数代替,LEN
函数是LENGTH
.
library(sqldf)
df_new <- sqldf("select df.*,
CASE
WHEN substr(ColA, length(ColA),1) = '-' THEN substr(ColA, 1, length(ColA)-1)
ELSE ColA
END AS New_Col from df")