繁体   English   中英

如何交替 3(数字)列的数值并将其放入一列?

[英]How do I alternate numeric values of 3 (numeric) columns and put that into one column?

这是我第一次在这里提问,如果不是很清楚,请见谅。 顺便说一句,我在 R 工作!

我有一个 df,它由 3 个数字列组成,每个列有 26 行。 让我们说XYZ 我想将这些值放入 1 列(称为“groupdata”)。 我想要的结果看起来像:

X1, Y1, Z1, X2, Y2, Z2, ... etc.

现在,我尝试过:

groupdata <- rep(c(X, Y, Z))

但是,这仅列出了以下值: X1:X26Y1:Y26Z1: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM