【问题标题】:Add brackets to string in data frame将括号添加到数据框中的字符串
【发布时间】:2016-12-30 02:51:18
【问题描述】:

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

ColumnA   ColumnB
String1   A
String2   A
String3   B
String4   A
...       ...

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

ColumnA     ColumnB
(String1)   A
(String2)   A
[String3]   B
(String4)   A
...         ...

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

【问题讨论】:

    标签: r rscript


    【解决方案1】:

    您可以使用ifelse

    df1$ColumnA <- with(df1, ifelse(ColumnB == "A", paste0("(", ColumnA, ")"), 
                                                        paste0("[", ColumnA, "]")))
    > df1$ColumnA
    
    #[1] "(String1)" "(String2)" "[String3]" "(String4)"
    

    或者如果ColumnB中有AB以外的值,可以使用多个ifelse

    df1$ColumnA <- with(df1, ifelse(ColumnB == "A", paste0("(", ColumnA, ")"), 
                           ifelse(ColumnB == "B", paste0("[", ColumnA, "]"), ColumnA)))
    > df1$ColumnA
    
    #[1] "(String1)" "(String2)" "[String3]" "(String4)"
    

    【讨论】:

    • 感谢您的快速回复。我试过了,但它不起作用。什么都没有改变。
    • 你的数据框的名称是什么?你有任何错误吗?
    • @TityBoi 如果你有一个factor 类,然后转换为characterifelse(as.character(ColumB) == "A", ...
    • 打赌他们没有像经常发生的那样将结果分配回去。 @TityBoi 你试过df$ColumnA&lt;-... 吗(用答案中的线替换点)?否则列将不会被替换。
    • 是的,就是这样 :) 非常感谢!
    猜你喜欢
    • 2013-11-05
    • 2013-04-17
    • 2022-01-24
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多