R - 根据另一列中的单词创建列

时间:2018-06-13 19:52:52

标签: r

有没有办法根据另一列中的单词在R数据框中创建新列?

例如我有一个“颜色”列,“蓝色1”,“蓝色2”,最多“蓝色6”,然后我有6个其他颜色,后面有他们自己的数字。有没有办法创建一个新的列,只会说“蓝色”,“绿色”,“黄色”等,而不会自己写出每种颜色?

color2 <- ifelse(color=="Blue 1", "Blue",
    ifelse(color=="Blue 2", "Blue",
    ifelse(color=="Blue 3", "Blue",
    ifelse(color=="Blue 4", "Blue",
    ifelse(color=="Blue 5", "Blue",
    ifelse(color=="Blue 6", "Blue",
                    NA  ))))

显然,我会继续使用其他颜色,但有更简化的方法吗?

1 个答案:

答案 0 :(得分:2)

我们可以通过在pattern中创建sub并将其替换为空白("")来删除空格后面的数字

sub("\\s+\\d+", "", color)

或者使用str_extract,只从字符串的开头(^)中提取一个或多个字母

library(stringr)
str_extract(color, "^[A-Za-z]+")