这篇文章给大家介绍怎么在R语言中对变量进行重编码和重命名,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、变量重编码重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程,如将符合某个条件的值重新赋值等,这里主要
这篇文章给大家介绍怎么在R语言中对变量进行重编码和重命名,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程,如将符合某个条件的值重新赋值等,这里主要介绍两种常见的方法:
#第一种方法per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000))perper$age[per$age == 1000] <- NA #设置缺失值per$age1[per$age < 30] = "young" #生成新变量per$age1[per$age >= 30 & per$age<50] <- "middle age" per#第二种方法per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000))per <- within(per,{ age1 <- NA age1[age < 30] <- "young" age1[age>=30 & age<50] <- "middle age"})per
变量已经存在,但是如果对变量名称不满意,可以对变量重新命名,这里提供以下几种方法:
手动输入。应用fix()函数调出编辑框,手动输入即可。
使用names()函数。格式为:names(x) <- value。需要指定对第几个变量名进行修改。
使用plyr包中的rename()函数。格式为rename(x, replace, warn_missing = TRUE, warn_duplicated = TRUE),需要指定对哪个变量名进行修改。
per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000))per#第一种方法:手动输入fix(per) #调出输入框,手动输入#第二种方法,names()函数per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000))names(per)[2] <- "年龄" #指定第个变量重命名per#第三种方法per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000))library(plyr)per <- rename(per,c(age="年龄")) #直接对变量名进行修改per
补充:R语言变量的处理(创建新变量 变量重新赋值)
#在mydata数据库中创建新变量sum,sum是mydata数据库中x1和x2之和mydata$sum <- mydata$x1 + mydata$x2#在mydata数据库中创建新变量mean,sum是mydata数据库中x1和x2平均mydata$mean <- (mydata$x1 + mydata$x2)/2
eg:
> newwomen=women> newwomen$bmi=women$weight/women$height^2;> newwomen height weight bmi1 58 115 0.034185492 59 117 0.033611033 60 120 0.033333334 61 123 0.033055635 62 126 0.032778366 63 129 0.032501897 64 132 0.032226568 65 135 0.031952669 66 139 0.0319100110 67 142 0.0316328811 68 146 0.0315743912 69 150 0.0315059913 70 154 0.0314285714 71 159 0.0315413615 72 164 0.03163580>
attach(mydata) #附上数据mydatamydata$sum <- x1 + x2 #在mydata数据库中创建新变量summydata$mean <- (x1 + x2)/2 #新变量meandetach(mydata) #每次attach数据之后,应该detach,解除之前的数据库粘附
这个地方我们看见x1和x2变量前面不需要再使用mydata$,那是因为我们之前已经附上mydata数据库(attach),这个时候,R已经知道会利用附上的数据中的x1和x2变量直接计算。但是创建的新变量sum必须使用$在mydata数据库之下,不然R就会计算出名字为sum,但是是个list性质的单独数据库。
mydata <- transfORM( mydata, sum = x1 + x2,mean = (x1 + x2)/2)#通过一行命令创建多个新变量。
newwomen=transform(women,bmi=weight/height^2)> newwomen height weight bmi1 58 115 0.034185492 59 117 0.033611033 60 120 0.033333334 61 123 0.033055635 62 126 0.032778366 63 129 0.032501897 64 132 0.032226568 65 135 0.031952669 66 139 0.0319100110 67 142 0.0316328811 68 146 0.0315743912 69 150 0.0315059913 70 154 0.0314285714 71 159 0.0315413615 72 164 0.03163580
mydata$agecat <- ifelse(mydata$age > 70,c("older"), c("younger")) # 创建年龄组别(2组)
该命令利用ifelse函数,有点类似于其他语言中的if….else。 该命令左边告诉R我们需要在mydata数据库里面创建新变量agecat(年龄组),该变量当age>70时,年龄组变量赋值为older,其他情况下(age<=70),年龄组变量赋值为younger。关于更多ifelse()信息和案例,可通过help(ifelse)查看。
attach(mydata)mydata$agecat[age > 75] <- "Elder"mydata$agecat[age > 45 & age <= 75] <- "Middle Aged"mydata$agecat[age <= 45] <- "Young"detach(mydata)#创建变量agecat,并按照年龄大小直接赋值.
fix(mydata) #直接重命名,关闭时保存
library(reshape)mydata <- rename(mydata, c(oldname="newname"))#利用reshape包里面的rename函数直接重命名。
关于怎么在R语言中对变量进行重编码和重命名就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
--结束END--
本文标题: 怎么在R语言中对变量进行重编码和重命名
本文链接: https://www.lsjlt.com/news/271269.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0