如何用字符串替换数据表中的行

时间:2019-12-18 03:15:36

标签: r string stringr

我正在处理GSS数据,其变量之一是家庭总收入。我认为他们不必要地将收入低于10,000的人分成8个组,因此我想将他们一起加入。我开始使用string_replace进行此操作,但似乎无法识别命令。

我跑步:

GSS2018$`Total family income` <- str_replace(GSS2018$`Total family income`,
                                                 "Under $1 000",
                                                  "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$1 000 to 2 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$3 000 to 3 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$4 000 to 4 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$5 000 to 5 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$6 000 to 6 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace_all(GSS2018$`Total family income`,
                                                 "$7 000 to 7 999",
                                                 "Under $10000")
GSS2018$`Total family income` <- str_replace(GSS2018$`Total family income`,
                                                 "$8 000 to 9 999",
                                                 "Under $10000")

但是,运行这些命令后似乎没有任何改变。字符串保持不变。我在这里做什么错了?

1 个答案:

答案 0 :(得分:3)

$使用所谓的“正则表达式”(您可以查询它们以获得更多信息)。这样,除了显而易见的值之外,还有一系列具有特殊含义的字符。一个这样的例子就是str_replace符号,当在正则表达式中使用时,它表示字符串的结尾。由于字符串的结尾永远不会出现在字符串的开头,因此这些情况都不会发生。

解决方案是使用转义子句,该子句说“不,我的意思是$”:$而不是\\$

第一行将变成

$

尽管如此,看来您的解决方案可能要简单得多。您可以执行以下操作,而不是多次执行同一操作:

GSS2018$`Total family income` <- str_replace(GSS2018$`Total family income`,
                                             "Under \\$1 000",
                                              "Under $10000")

GSS2018[GSS2018$`Total family income` %in% c("Under $1 000", "$1 000 to 2 999", ..., "$8 000 to 9 999")]$`Total family income` <- "Under $10000 替换为您想要的值。