![](/img/trans.png)
[英]How can I create a one-column dataframe containing all numeric values of a dataframe with several columns?
[英]How do I alternate numeric values of 3 (numeric) columns and put that into one column?
这是我第一次在这里提问,如果不是很清楚,请见谅。 顺便说一句,我在 R 工作!
我有一个 df,它由 3 个数字列组成,每个列有 26 行。 让我们说X
, Y
, Z
。 我想将这些值放入 1 列(称为“groupdata”)。 我想要的结果看起来像:
X1, Y1, Z1, X2, Y2, Z2, ... etc.
现在,我尝试过:
groupdata <- rep(c(X, Y, Z))
但是,这仅列出了以下值: X1:X26
、 Y1:Y26
、 Z1:Z26
有人可以帮我解决这个问题吗?
假设您有一个数据框df
:
X <- rnorm(26)
Y <- runif(26)
Z <- rnorm(26, 5)
df <- data.frame(X, Y, Z)
# X Y Z
# 1 -1.83922080 0.774802928 5.241226
# 2 -0.27454727 0.061767963 7.852047
# 3 -1.04591385 0.531488041 4.922031
# 4 0.05362313 0.069112943 3.992769
# 5 -1.64507884 0.495397887 4.338495
# 6 0.82140902 0.850252364 6.257287
# ...
您可以将其转换为矩阵,旋转它并手动将矩阵的维度更改为单个值(因此将其转换为向量),如下所示:
mat <- t(as.matrix(df))
dim(mat) <- prod(dim(mat)) # in this case 26*3 = 78
# [1] -1.839220796 0.774802928 5.241226068 -0.274547267 0.061767963
# [6] 7.852047069 -1.045913855 0.531488041 4.922030849 0.053623133
# [11] 0.069112943 3.992769370 ...
正如 Darren Tsai 所评论的,有一种更优雅的解决方案:
c(t(df))
# [1] -1.839220796 0.774802928 5.241226068 -0.274547267 0.061767963
# [6] 7.852047069 -1.045913855 0.531488041 4.922030849 0.053623133
# [11] 0.069112943 3.992769370 ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.