Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何用字符串替换数据表中的行_R_String_Stringr - Fatal编程技术网

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

R 如何用字符串替换数据表中的行,r,string,stringr,R,String,Stringr,我正在处理GSS数据,其中一个变量是家庭总收入。我认为他们不必要地将10000以下的收入分成8组,所以我想把他们全部加入。我用string_replace来做这个,但它似乎无法识别命令 我运行: GSS2018$`Total family income` <- str_replace(GSS2018$`Total family income`, "Under $1 000",

我正在处理GSS数据,其中一个变量是家庭总收入。我认为他们不必要地将10000以下的收入分成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")
然而,在我运行这些之后,似乎没有什么变化。字符串保持不变。我做错了什么?

str\u replace使用所谓的正则表达式,您可以查找它们以了解更多信息。因此,除了明显的值之外,还有一系列字符被赋予了特殊的含义。其中一个例子是$符号,当在正则表达式中使用时,它表示字符串的结尾。由于字符串的结尾永远不会出现在字符串的开头,因此这些情况都不会发生

解决这个问题的方法是使用escape子句,它说不,我的意思是$:\\$而不是$

因此,第一行将成为

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
在哪里。。。替换为您要查找的值。

str\u replace使用所谓的正则表达式,您可以查找它们以了解更多信息。因此,除了明显的值之外,还有一系列字符被赋予了特殊的含义。其中一个例子是$符号,当在正则表达式中使用时,它表示字符串的结尾。由于字符串的结尾永远不会出现在字符串的开头,因此这些情况都不会发生

解决这个问题的方法是使用escape子句,它说不,我的意思是$:\\$而不是$

因此,第一行将成为

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

在哪里。。。将替换为您要查找的值。

我尝试了您一次重命名多个类别的更简单方法,但出现以下错误:错误:的逻辑索引向量长度[必须等于列数或1:*。数据有24列*索引向量的长度为2348我尝试了一次重命名多个类别的更简单方法,但我遇到了以下错误:错误:逻辑索引向量的长度[必须等于列数或1:*。数据有24列*索引向量的长度为2348