我在重构数据框时遇到了一些程序障碍。
我有以下数据框架结构:
> nrow(data)
[1] 731
> ncol(data)
[1] 25
HE01 HE02 HE03 ... HE24 HE25
1)value1 value 2 value 3 ... value 24 value 25
...
731) value 1 value 2 value 3 ... value 24 value 25
我的目的是以下列方式重组数据: 1)将列名放在前面的特定列中 2)从每个相应列名旁边的列中的每一行插入值,并在1到25的循环中再插入一次。
不知怎的这样:
HE01 value 1
HE02 value 2
...
HE25 value 25
and again for row number two
HE01 value 1
...
HE25 value 25
and again in this pattern till row number 731
我认为这可以通过某种循环来完成,但无法弄清楚具体如何。
提前感谢您的回答。
答案 0 :(得分:2)
因为我不喜欢在评论中回答......
想象一下你从这开始:
set.seed(1)
M <- data.frame(
matrix(rnorm(25), ncol = 5,
dimnames = list(NULL, paste0("HE", 1:5))))
M
# HE1 HE2 HE3 HE4 HE5
# 1 -0.6264538 -0.8204684 1.5117812 -0.04493361 0.91897737
# 2 0.1836433 0.4874291 0.3898432 -0.01619026 0.78213630
# 3 -0.8356286 0.7383247 -0.6212406 0.94383621 0.07456498
# 4 1.5952808 0.5757814 -2.2146999 0.82122120 -1.98935170
# 5 0.3295078 -0.3053884 1.1249309 0.59390132 0.61982575
尝试:
stack(M)
或
reshape(M, direction = "long", varying = 1:5, sep = "")
或
data.frame(ind = rep(names(M), each = ncol(M)),
val = unlist(M))
或
library(reshape2)
melt(M)
鉴于您描述的问题,第一个选项对我来说最有意义。