2014-06-25 513 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