有没有办法根据另一列中的单词在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 ))))
显然,我会继续使用其他颜色,但有更简化的方法吗?
答案 0 :(得分:2)
我们可以通过在pattern
中创建sub
并将其替换为空白(""
)来删除空格后面的数字
sub("\\s+\\d+", "", color)
或者使用str_extract
,只从字符串的开头(^
)中提取一个或多个字母
library(stringr)
str_extract(color, "^[A-Za-z]+")