我有一个示例数据框:
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种颜色答案 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