2014-07-11 48 views
-1

我有一个表,如:合并两列进一个,删除colnames

a 
n_msi2010 n_msi2011 
1 -0.122876 1.818750 
2 1.328930 0.931426 
3 -0.111653 4.400060 
4 1.222900 4.500450 
5 3.604160 6.110930 

我想这两列合并成一列获得(我不希望保留的列名) :

a 
    n_msi2010 
1 -0.122876 
2 1.328930 
3 -0.111653 
4 1.222900 
5 3.604160 
6 1.818750 
7 0.931426 
8 4.400060 
9 4.500450 
10 6.110930 

当我使用预制的数据,如

x <- cbind(c(1, 2, 3), c(4, 5, 6)) 
colnames(x)<-c("a","b") 
c(t(x)) 
# 1 4 2 5 3 6 
c((x)) 
# 1 2 3 4 5 6 

列合并工作正常。只有在“一个”例如ID不起作用,它创建2个独立的向量。我不明白为什么。任何帮助?谢谢

+0

难道你的“表”是一个data.frame?你的'x'是一个矩阵。 – Roland

回答

1

好像你的问题是关于列与从data.frame行顺序向量生成。

data.frame使用t()data.frame转换为matrix,并在使用matrix去除c()其尺寸。

有了这些知识,你可以尝试:

# create a vector of values, column by column 
c(as.matrix(a)) # you are missing the `as.matrix` in your current approach 

# create a vector of values, row by row 
c(t(a))   # you already know this works 

其他方法“逐列”得到的结果将是:

unlist(a, use.names = FALSE) 
stack(a)[, "values"]  # add `drop = FALSE` if you want to retain a data.frame 
+0

谢谢,就是这样 – maycca

0

不是一个优雅的方式,但它似乎可以结合两个或几个列。

n_msi2010 <- 1:5 
n_msi2011 <- 6:10 
a <- data.frame(n_msi2010, n_msi2011) 

vector <- vector() 

for (i in 1:dim(a)[2]){ 
    vector <- append(vector, as.vector(a[,i])) 
    vector 
} 

你可以做

as.matrix(vector) or data.frame(vector)