R 如何用字符串替换数据表中的行
我正在处理GSS数据,其中一个变量是家庭总收入。我认为他们不必要地将10000以下的收入分成8组,所以我想把他们全部加入。我用string_replace来做这个,但它似乎无法识别命令 我运行: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",
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