在R中将多个因子重命名为新的、相同的因子名称

在R中将多个因子重命名为新的、相同的因子名称,r,R,我正在为一个个人项目处理一家餐厅的一些数据。按照数据的组织方式,有表号标签,也有订单名称。我想将所有的to go订单名称更改为相同的标签“togo”,同时保留所有表号 > > togo <- c("1","5","12",rep("Togo",6),"4") > data.frame(chknum,togo) chknum togo 1 1 1 2 2 5 3 3 12 4 4 Togo 5

我正在为一个个人项目处理一家餐厅的一些数据。按照数据的组织方式,有表号标签,也有订单名称。我想将所有的to go订单名称更改为相同的标签“togo”,同时保留所有表号

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
例如:

> chknum <- seq(1:10)
> Tble <- c("1","5","12","Togo", "Bob togo","Cheesecake togo","Togo in 15 mins", "To go", "To-go","4")
> data.frame(chknum,Tble)
   chknum            Tble
1       1               1
2       2               5
3       3              12
4       4            Togo
5       5        Bob togo
6       6 Cheesecake togo
7       7 Togo in 15 mins
8       8           To go
9       9           To-go
10     10               4
> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
>chknum Tble数据帧(chknum,Tble)
chknum Tble
1       1               1
2       2               5
3       3              12
4多哥
5鲍勃·多哥
6多哥奶酪蛋糕
7多哥15分钟后
要走了
9点9分
10     10               4
理想情况下,我希望所有多哥订单都有相同的标签:

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
>
>多哥数据帧(chknum,多哥)
多哥
1       1    1
2       2    5
3       3   12
4多哥
5多哥
6多哥
7多哥
8多哥
9多哥
10     10    4

我已经尝试了因子(x)和重命名的所有方式,我知道如何,但有数百种不同的多哥订单名称因子,我不知道最有效的方式

你可以试试正则表达式

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
chknum <- seq(1:10)
Tble <- c("1","5","12","Togo", "Bob togo","Cheesecake togo","Togo in 15 mins", "To go", "To-go","4")
Tble[grepl("[Tt][Oo].*[Gg][Oo]", Tble)] <- "Togo"
cbind(chknum, Tble)

chknum你可以试试正则表达式

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
chknum <- seq(1:10)
Tble <- c("1","5","12","Togo", "Bob togo","Cheesecake togo","Togo in 15 mins", "To go", "To-go","4")
Tble[grepl("[Tt][Oo].*[Gg][Oo]", Tble)] <- "Togo"
cbind(chknum, Tble)
chknum
library(stringr)
#先抓住数字。从开始(^)到结束($)必须是数字(\\d)。
#替换为括号中第一个括号中的内容,即不要修改
#thsi并不是严格必要的,而是用来展示如何匹配数字。
df$togo
库(stringr)
#先抓住数字。从开始(^)到结束($)必须是数字(\\d)。
#替换为括号中第一个括号中的内容,即不要修改
#thsi并不是严格必要的,而是用来展示如何匹配数字。

df$togo我们只需将其转换为
数值
即可获得非数值元素的所有NA元素,并将其替换为“togo”

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
df1$Tble[is.na(as.numeric(df1$Tble))] <- "Togo"
df1
#   chknum Tble
#1       1    1
#2       2    5
#3       3   12
#4       4 Togo
#5       5 Togo
#6       6 Togo
#7       7 Togo
#8       8 Togo
#9       9 Togo
#10     10    4

df1$Tble[is.na(as.numeric(df1$Tble))]

> 
> togo <- c("1","5","12",rep("Togo",6),"4")
> data.frame(chknum,togo)
   chknum togo
1       1    1
2       2    5
3       3   12
4       4 Togo
5       5 Togo
6       6 Togo
7       7 Togo
8       8 Togo
9       9 Togo
10     10    4
df1$Tble[is.na(as.numeric(df1$Tble))] <- "Togo"
df1
#   chknum Tble
#1       1    1
#2       2    5
#3       3   12
#4       4 Togo
#5       5 Togo
#6       6 Togo
#7       7 Togo
#8       8 Togo
#9       9 Togo
#10     10    4

df1$Tble[is.na(as.numeric(df1$Tble))]作为旁白,不要使用
cbind
创建数据集,因为它会将所有内容转换为文本。使用
data.frame(chknum,多哥)
您可以通过排除来完成吗?任何不仅仅是数字的东西都是“to go”?作为旁白,不要使用
cbind
创建数据集,因为它会将所有内容转换为文本。使用
data.frame(chknum,多哥)
您可以通过排除来完成吗?任何不仅仅是数字的东西都是“ToGo”?可能
*
在你亲密接触时太自由了。。。也许从
[-]*
开始,然后从那里展开?也许
*
在你熟悉的时候太自由了。。。也许可以从
[-]*
开始,然后从那里展开?嘿,epi99,谢谢你的回答。使用(\\d)表示任何数字对我来说都是一个新概念。对于任何字母或单词是否有同等的程序?还有一些to go订单不包含字母“to”,例如“Jeff”,我想知道是否有类似(\\word)的东西可以执行与数字相同的过程,但可以使用任何字母/word@SDMcLean13,这些是正则表达式中的字符类。尝试点击参考,然后点击字符类HEY epi99,谢谢你的回答。使用(\\d)表示任何数字对我来说都是一个新概念。对于任何字母或单词是否有同等的程序?还有一些to go订单不包含字母“to”,例如“Jeff”,我想知道是否有类似(\\word)的东西可以执行与数字相同的过程,但可以使用任何字母/word@SDMcLean13,这些是正则表达式中的字符类。尝试单击“引用”,然后单击“角色类”