2014-06-25 474 views
1

我有一个大约20列的数据框“数据”。看起来有点像:如何在R中插入空白列

Name Data1 Data2 Data3 Data4 Data5 .... 
Fred 2  0  1  3 7 
Tim 2  3  6  5 6 
Jack 3  1  1  2 6 
Denise 4  5  0  2 8 

我想在第一列之后插入三列“ID”,“年龄”,“学校”。

有没有办法做到这一点?

我尝试这样做:

ID<-'' 
Age<-'' 
School<-'' 
data<-cbind(data[,1], ID, Age, School, data[,2:ncol(data)]) 

它增加了这些列,但第一列变成“数据[1]”,并且没有办法可以重命名。

回答

2

试试这个:

> data = read.table(header=T, text='Name Data1 Data2 Data3 Data4 Data5 

Fred 2  0  1  3 7 
Tim 2  3  6  5 6 
Jack 3  1  1  2 6 
Denise 4  5  0  2 8') 

> cbind(Name=data[,1], ID="", Age="", School="", data[,2:ncol(data)]) 

    Name ID Age School Data1 Data2 Data3 Data4 Data5 
1 Fred     2  0  1  3  7 
2 Tim     2  3  6  5  6 
3 Jack     3  1  1  2  6 
4 Denise     4  5  0  2  8 
1

Append也能做到这一点。

dat <- read.table(text = " 
Name Data1 Data2 Data3 Data4 Data5 
Fred 2  0  1  3 7 
Tim 2  3  6  5 6 
Jack 3  1  1  2 6 
Denise 4  5  0  2 8", header = TRUE) 

dat.new <- data.frame(append(dat, list(ID = "", age = ""), after = 2)) 
head(dat.new) 
# Name Data1 ID age Data2 Data3 Data4 Data5 
#1 Fred  2   0  1  3  7 
#2 Tim  2   3  6  5  6 
#3 Jack  3   1  1  2  6 
#4 Denise  4   5  0  2  8 

这里我们使用的事实data.frame就等于长(几乎)的向量的list