我有一个包含数百万个观测值的数据集。
该数据集的一列使用4或5个字符对这些观察结果进行分类。
我的目标是将此分类合并为较小的组,例如,我想将STARTS列中的所有值仅用“ A”替换为“ AA”(例如“ AABC”或“ AAUCC”)。我怎样才能做到这一点?
为了显示:
考虑到我的数据标记为“ f2016”,而我感兴趣的列是“ SECT16”,我一直在使用以下代码替换值:f2016$SECT16[f2016$SECT16 == "AABB"] <- "A"
但是我无法对数据集中的所有字母组合执行此操作。有没有办法可以保持前两个字母不变而进行相同的替换?
最佳答案
这是另一个base R
解决方案:
f2016[startsWith(f2016$SECT16, "AA"),] <- "A"
# SECT16
# 1 A
# 2 A
# 3 ABBBBC
# 4 DDDDE
# 5 BABA
这将用本例中指定的前缀
chars
替换AA
。摘录自help(startsWith)
。startsWith()等效于但比其快得多
substring(x,1,nchar(prefix))==前缀
或者也
grepl(“ ^”,x)
其中prefix不包含特殊的正则表达式字符。
数据
f2016 <- data.frame(SECT16 = c("AAABBB", "AAAAAABBBB", "ABBBBC", "DDDDE", "BABA"), stringsAsFactors = F)