如何剖析字符串以创建新变量?

时间:2017-07-24 16:25:31

标签: r string

我有一个示例数据框:

ID   Code
 1   1, 1, 1
 2   1, 2, 3
 3   2, 2
 4   3
 5   2, 1

Where" Code"由编码为1,2,3或其组合的颜色组成。 "代码"是字符类型。我想根据" Code"中的值创建一个新列,以便我有一个这样的数据帧:

ID   Code       Description
 1   1, 1, 1          White
 2   1, 2, 3       Multiple           
 3   2, 2             Green
 4   3                 Blue
 5   2, 1          Multiple

新列编码为" Multiple"如果"代码"

中有多于1种颜色

1 个答案:

答案 0 :(得分:1)

我们创建一个名为key/value vector,然后拆分'代码'以根据匹配'v1'创建预期输出

v1 <- setNames( c('White', 'Green', 'Blue'), 1:3)
df1$Description <- unname(sapply(strsplit(df1$Code, ",\\s*"), function(x) 
      if(length(unique(x))> 1) 'Multiple' else v1[unique(x)]))
df1
#    ID    Code Description
#1  1 1, 1, 1       White
#2  2 1, 2, 3    Multiple
#3  3    2, 2       Green
#4  4       3        Blue
#5  5    2, 1    Multiple