我们先创建一个基础数据框df
,用madata
记录初始值.
初值备份是一个良好的习惯,这可避免你在误操作后丢失初值.
> manager<-c(1,2,3,4,5)
> date<-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
> country<-c("us","us","us","uk","ch")
> df<-data.frame(manager,date,country,stringsAsFactors = FALSE)
> mydata<-df #记录数据框的初始值
> df
manager date country
1 1 10/24/08 us
2 2 10/28/08 us
3 3 10/1/08 us
4 4 10/12/08 uk
5 5 5/1/09 ch
1.变量的新增
1.1新增变量与已有变量无关
对于上述数据框df
,如果想增加一个变量age<-c(32,10,65,150,46)
:
> df$age<-c(32,10,65,150,46)
> df
manager date country age
1 1 10/24/08 us 32
2 2 10/28/08 us 10
3 3 10/1/08 us 65
4 4 10/12/08 uk 150
5 5 5/1/09 ch 46
1.2新增与已有变量相关
如果你想将country
和manger
变量合并为一个变量:country_manager
:那么首先要新增country_manager
变量,再删除country
和manger
变量.
country_manager
变量的添加方法如下:
方法1:
下面代码中的$
用于访问数据框中的变量;paste()
函数用于拼接字符,其参数sep="_"
指定了字符连接符为下划线;as.character()
函数用于将对象转换为character类型.
> df$country_manager<-paste(df$country,as.character(df$manager),sep="_")
> df
manager date country age country_manager
1 1 10/24/08 us 32 us_1
2 2 10/28/08 us 10 us_2
3 3 10/1/08 us 65 us_3
4 4 10/12/08 uk 150 uk_4
5 5 5/1/09 ch 46 ch_5
这种方法每次访问变量都需要数据框名$变量名
,代码冗杂,且每次只能添加一个变量,使用transform()函数可以简化其过程.
方法2:transform()函数
> transform(mydata,age=c(32,10,65,