将括号添加到数据框中的字符串

Tit*_*Boi 3 r rscript

我有一个名为 df 的数据框:

ColumnA   ColumnB
String1   A
String2   A
String3   B
String4   A
...       ...
Run Code Online (Sandbox Code Playgroud)

ColumnA 中的每个字符串都有不同的长度。如果同一行中 ColumnB == A 中的值,我想将 ColumnA 中的值放在括号中。如果 ColumnB == BI 中的值要添加方括号。所以它看起来像:

ColumnA     ColumnB
(String1)   A
(String2)   A
[String3]   B
(String4)   A
...         ...
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

Ron*_*hah 5

您可以使用ifelse

df1$ColumnA <- with(df1, ifelse(ColumnB == "A", paste0("(", ColumnA, ")"), 
                                                    paste0("[", ColumnA, "]")))
> df1$ColumnA

#[1] "(String1)" "(String2)" "[String3]" "(String4)"
Run Code Online (Sandbox Code Playgroud)

A或者,如果除了和Bin之外还有其他值ColumnB,您可以使用多个ifelse

df1$ColumnA <- with(df1, ifelse(ColumnB == "A", paste0("(", ColumnA, ")"), 
                       ifelse(ColumnB == "B", paste0("[", ColumnA, "]"), ColumnA)))
> df1$ColumnA

#[1] "(String1)" "(String2)" "[String3]" "(String4)"
Run Code Online (Sandbox Code Playgroud)

  • 打赌他们没有像经常发生的那样将结果分配回来。@TityBoi您是否尝试过`df$ColumnA&lt;-...`(用答案中的线替换点)?否则,列将不会被替换。 (2认同)