gpt4 book ai didi

r - 如何选择一行,然后转置它,然后将它与 R 中的其余部分堆叠在一起?

转载 作者:行者123 更新时间:2023-12-01 00:43:34 25 4
gpt4 key购买 nike

假设我有这个数据集,

library(data.table)
mydata <- data.table(col1=c(11,21,31),
col2=c(12,22,32),
col3=c(13,23,33))

mydata

col1 col2 col3
1: 11 12 13
2: 21 22 23
3: 31 32 33

我需要的是:

  • 选择第一行并将其转置。
  • 然后,选择第二行将其堆叠在第一行下方。
  • 然后,选择第三行将其堆叠在第二行下方...等等。

我有 1,135 行。愚蠢的解决方案是手动执行此操作。例如,

mynewdata=t(data.frame(mydata[1,],mydata[2,],mydata[3,]))

mynewdata

[,1]
col1 11
col2 12
col3 13
col1.1 21
col2.1 22
col3.1 23
col1.2 31
col2.2 32
col3.2 33

直到我到达第 1,135 行。我知道它必须涉及某种循环?但我不知道如何循环。提前致谢。

最佳答案

本质上是一个带有行 ID 的 melt 操作。尝试:

out <- setkey(melt(mydata[,row := .I], id.vars="row"),row)
out

# row variable value
#1: 1 col1 11
#2: 1 col2 12
#3: 1 col3 13
#4: 2 col1 21
#5: 2 col2 22
#6: 2 col3 23
#7: 3 col1 31
#8: 3 col2 32
#9: 3 col3 33

用 base R 语言来说,这是一个堆栈:

out <- cbind(row=seq_len(nrow(mydata)),stack(mydata))
out[order(out$row),]

# row values ind
#1 1 11 col1
#4 1 12 col2
#7 1 13 col3
#2 2 21 col1
#5 2 22 col2
#8 2 23 col3
#3 3 31 col1
#6 3 32 col2
#9 3 33 col3

关于r - 如何选择一行,然后转置它,然后将它与 R 中的其余部分堆叠在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com