R语言变量的重命名和一些处理
来源:互联网 发布:二胡软件 编辑:程序博客网 时间:2024/05/20 04:11
R语言变量的重命名和一些处理
一致报错:Error in data.frame(manager, date, country, gender, age, q1, q2, q3, q4, :
参数值意味着不同的行数: 4, 5
网上查了一下是因为有的向量行数为4有的为5造成的;manager,date,country,gender,age,q1,q2,q3,q4,q5的行数不一样多,有的4行,有的5行,就报错
> manager<-c(1,2,3,4) #4行> date<-c("10/14/08","10/28/08","10/1/18","10/12/08","5/1/09") #五行> country<-c("us","us","uk","uk") #4行> gender<-c("M","F","F","M","F")> age<-c(32,45,25,39,99)> q1<-c(5,3,3,3,2)> q2<-c(4,5,5,3,2)> q3<-c(5,2,5,4,1)> q4<-c(5,5,5,NA,2)> q5<-c(5,5,2,NA,1)> leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringSASFactors=FALSE)Error in data.frame(manager, date, country, gender, age, q1, q2, q3, q4, : 参数值意味着不同的行数: 4, 5, 1> leadershipError: object 'leadership' not found> leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors=FALSE)Error in data.frame(manager, date, country, gender, age, q1, q2, q3, q4, : 参数值意味着不同的行数: 4, 5> leadership<-data.frame(manager,date,country,gender,age,+ q1,q2,q3,q4,q5,stringsAsFactors=FALSE)Error in data.frame(manager, date, country, gender, age, q1, q2, q3, q4, : 参数值意味着不同的行数: 4, 5
经过修改后运行成功 :
> manager<-c(1,2,3,4,5)> date<-c("10/14/08","10/28/08","10/1/18","10/12/08","5/1/09")> country<-c("us","us","uk","uk","uk")> gender<-c("M","F","F","M","F")> age<-c(32,45,25,39,99)> q1<-c(5,3,3,3,2)> q2<-c(4,5,5,3,2)> q3<-c(5,2,5,4,1)> q4<-c(5,5,5,NA,2)> q5<-c(5,5,2,NA,1)> leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors=FALSE)> leadership manager date country gender age q1 q2 q3 q4 q51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 24 4 10/12/08 uk M 39 3 3 4 NA NA5 5 5/1/09 uk F 99 2 2 1 2 1> #表中有缺失值还有一些比较奇怪的值,要把manager改为managerID,date改为dateTest> #需要导包reshape> install.packages("reshape")trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.2/reshape_0.8.5.zip'Content type 'application/zip' length 127545 bytes (124 KB)downloaded 124 KBpackage ‘reshape’ successfully unpacked and MD5 sums checked The downloaded binary packages are inC:\Users\Administrator\AppData\Local\Temp\RtmpEbBcQf\downloaded_packages> library("reshape")Warning message:程辑包‘reshape’是用R版本3.2.5 来建造的 > #然后对leadership的变量进行重新赋值> leadership<-rename(leadership,c(manager="managerID",date="testDate"))> leadership managerID testDate country gender age q1 q2 q3 q4 q51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 24 4 10/12/08 uk M 39 3 3 4 NA NA5 5 5/1/09 uk F 99 2 2 1 2 1> names(leadership)[6:10]<-c("item1","item2","item3","item4","item5")> leadership managerID testDate country gender age item1 item2 item3 item4 item51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 24 4 10/12/08 uk M 39 3 3 4 NA NA5 5 5/1/09 uk F 99 2 2 1 2 1> #函数is.na()判断是否有缺失值:is.na()作用在对象上的原理:它返回相同大小的对象,如果某一个位置是缺失值,则相应的位置会被改写成true,否则改写为false> y<-c(1,2,NA,4)> is.na(y)[1] FALSE FALSE TRUE FALSE> is.na(leadership[,6:10]) item1 item2 item3 item4 item5[1,] FALSE FALSE FALSE FALSE FALSE[2,] FALSE FALSE FALSE FALSE FALSE[3,] FALSE FALSE FALSE FALSE FALSE[4,] FALSE FALSE FALSE TRUE TRUE[5,] FALSE FALSE FALSE FALSE FALSE
install.packages("reshape")
library("reshape")
#然后对leadership的变量进行重新赋值
leadership<-rename(leadership,c(manager="managerID",date="testDate"))
#把列名修改为我们需要的列名还可以使用names()函数;把q1-15变为item1-item5
names(leadership)[6:10]<-c("item1","item2","item3","item4","item5")
#函数is.na()判断是否有缺失值:is.na()作用在对象上的原理:它返回相同大小的对象,如果某一个位置是缺失值,则相应的位置会被改写成true,否则改写为false
y<-c(1,2,NA,4)
is.na(y)
#现在把is.na()应用到leadershipshang
is.na(leadership[,6:10])
#有关重编码有些值是缺失值的情况
#年龄中有个是99,他会把年龄的平均值拉高的离谱,所以要把99表示为缺失值
leadership$age[leadership$age==99]<-NA
#在分析当中是如何来排除缺失值的;
#在含有缺失值的算术表达式它的结果也是缺失值
sum<-y[1]+y[2]+y[3]+y[4]
sum
#由于y的第四个值是缺失值所以导致了整个结果也是缺失值
#现在对缺失值进行处理,用na.rm把缺失值删除
sum<-sum(y,na.rm=TRUE)
sum
> leadership$age[leadership$age==99]<-NA> leadership managerID testDate country gender age item1 item2 item3 item4 item51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 24 4 10/12/08 uk M 39 3 3 4 NA NA5 5 5/1/09 uk F NA 2 2 1 2 1> sum<-y[1]+y[2]+y[3]+y[4]> sum[1] NA> sum<-sum(y,na.rm=TRUE)> sum[1] 7
na.omit()函数,可以移除所有含有缺失值的行;
删除所有含有缺失值的观测,称之为行删除;处理不完整数据集的一个手段;
如果只有一小部分缺失值,或者缺失值只集中在一小部分观测数据中,则行删除是可以采取的;但是如果含有大量的缺失值则需要更为合理的缺失值处理方法;
> newData<-na.omit(leadership)> leadership managerID testDate country gender age item1 item2 item3 item4 item51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 24 4 10/12/08 uk M 39 3 3 4 NA NA5 5 5/1/09 uk F NA 2 2 1 2 1> newData managerID testDate country gender age item1 item2 item3 item4 item51 1 10/14/08 us M 32 5 4 5 5 52 2 10/28/08 us F 45 3 5 2 5 53 3 10/1/18 uk F 25 3 5 5 5 2
R语言中日期值的处理:
日期值通常以字符串的形式存输入到R中,然后转化为用数值的形式存储的变量;
X.data()
newData<-na.omit(leadership)
newData
data1<-as.Date("2016-5-23","2016-5-22")
data1
strDates<-c("01/05/1965","08/19/2013")
date2<-as.Date(strDates,"%m/%d/%Y")
date2
#输出当前系统时间
Sys.Date()
#还可以使用date()函数
date()
#用format指定输入的格式
today<-Sys.Date()
format(today,format="%B %d %Y")
#距离周末的情况%A(输入星期几)
format(today,format="%A")
#求日期之差
starDate<-as.Date("2016-2-10")
endDate<-as.Date("2016-5-23")
days<-endDate-starDate
Days
birthday<-as.Date("1972-01-14")
difftime(today,birthday,units = "weeks")
#字符串
strDates<-as.character(today)
strDates
> data1<-as.Date("2016-5-23","2016-5-22")> data1[1] NA> strDates<-c("01/05/1965","08/19/2013")> date2<-as.Date(strDates,"%m/%d/%Y")> date2[1] "1965-01-05" "2013-08-19"> Sys.Date()[1] "2016-05-23"> date()[1] "Mon May 23 17:00:34 2016"> today<-Sys.Date()> format(today,format="%B %d %Y")[1] "五月 23 2016"> format(today,format="%A")[1] "星期一"> #求日期之差> starDate<-as.Date("2016-2-10")> endDate<-as.Date("2016-5-23")> days<-endDate-starDate> daysTime difference of 103 days> birthday<-as.Date("1972-01-14")> difftime(today,birthday,units = "weeks")Time difference of 2314.429 weeks> strDates<-as.character(today)> strDates[1] "2016-05-23"
R语言提供了判断某个对象的数据类型以及将其转化为另一种数据类型的函数;向一个数值型向量添加一个字符串,会将向量的所有元素都转化为字符型;
> a<-c(1,2,3)> #判断a是不是数值型> is.numeric(a)[1] TRUE> #判断a是不是向量> is.vector(a)[1] TRUE> #把a转化为字符型> a<-as.character(a)> a[1] "1" "2" "3"> #在判断a是不是数值型的> is.numeric(a)[1] FALSE> #在判断a是不是字符型的> is.character(a)[1] TRUE> #在判断a是不是向量> is.vector(a)[1] TRUE> #在判断a是不是矩阵> is.matrix(a)[1] FALSE> #在判断a是不是数值型的> is.data.frame(a)[1] FALSE> #在判断a是不是因子> is.factor(a)[1] FALSE
- R语言变量的重命名和一些处理
- R语言学习笔记-变量重命名
- R语言不能给数据框的列重命名
- R语言:变量名称和字符串的转换
- R语言的一些问题
- R语言的一些笔记
- R语言的一些看法
- R语言的一些笔记
- 集算器和R语言处理外存文本文件的对比
- R语言_符串处理和grep的用法
- R语言_字符串处理和grep的用法
- 集算器和R语言处理外存文本文件的对比
- Eclipse 变量的重命名
- R语言-变量的基本操作
- R语言 变量的操作函数
- R语言虚拟化变量的设置
- R语言--数值和字符处理函数
- R语言 变量
- UnsafeMutablePointer<CGPoint> 转化为CGPoint
- Rxjava的线程问题
- caffe学习笔记(10):Gradient descent optimization algorithm
- Redis 分页排序查询
- mysql加载Sakila样例数据库
- R语言变量的重命名和一些处理
- iOS tableView表视图设置背景图片
- hadoop集群搭建
- [GIT] 取消对某个文件的追踪
- JavaScript闭包中的this
- springMVC (五) annotation-driven
- java之九 基本输入输出流
- 山东省第六届ACM大学生程序设计竞赛-Lowest Unique Price(桶排序)
- Java中Vector ArrayList LinkedList之间的区别与联系