2016-08-23 21 views
2

我有了这个数据帧称为DF:字符串加上括号中的数据帧

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

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

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

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

回答

3

您可以使用ifelse

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

#[1] "(String1)" "(String2)" "[String3]" "(String4)" 

或者是否有ColumnBAB其他值,您可以使用多个ifelse

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

#[1] "(String1)" "(String2)" "[String3]" "(String4)" 
+0

感谢快速回复。我试过了,它不起作用。什么也没有变。 – TityBoi

+0

你的数据框的名称是什么?你有什么错误吗? –

+1

@TityBoi如果你有一个'factor'类,然后转换为'字符',即'ifelse(as.character(ColumB)==“A”,...' – akrun