我有一张表:
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
列合并工作正常。仅限于&#34; a&#34;例如,id不起作用,它创建了2个单独的向量。我真的不明白为什么。有帮助吗?感谢
答案 0 :(得分:1)
似乎您的问题是关于从data.frame
创建列与行顺序向量。
在t()
上使用data.frame
会将data.frame
转换为matrix
,并使用c()
上的matrix
删除其尺寸。< / p>
有了这些知识,你可以尝试:
# 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
答案 1 :(得分: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)