gpt4 book ai didi

r - 组合多列/堆叠多列

转载 作者:行者123 更新时间:2023-12-04 10:20:35 25 4
gpt4 key购买 nike

所以我有 9 列

     a b c d e f g h i     
1 1 t p 1 h p 1 v g
2 2 e h 2 j m 2 c f
3 3 f g 3 k l 3 b d

我想知道我怎样才能让它们像这样
     a b c
1 1 t p
2 2 e h
3 3 f g
4 1 h p
5 2 j m
6 3 k l
7 1 v g
8 2 c f
9 3 b d

最佳答案

我们可以使用 reshape来自 base R通过指定要在 list 中组合在一起的列的 vector

out <- reshape(df1, direction = 'long', 
varying = list(c('a', 'd', 'g'), c('b', 'e', 'h'),
c('c', 'f', 'i')))[c('a', 'b', 'c')]
row.names(out) <- NULL
out
# a b c
#1 1 t p
#2 2 e h
#3 3 f g
#4 1 h p
#5 2 j m
#6 3 k l
#7 1 v g
#8 2 c f
#9 3 b d

或使用 melt来自 data.table
library(data.table)
melt(setDT(df1), measure = list(c('a', 'd', 'g'), c('b', 'e', 'h'),
c('c', 'f', 'i')), value.name = c('a', 'b', 'c'))[, variable := NULL][]

数据
df1 <- structure(list(a = 1:3, b = c("t", "e", "f"), c = c("p", "h", 
"g"), d = 1:3, e = c("h", "j", "k"), f = c("p", "m", "l"), g = 1:3,
h = c("v", "c", "b"), i = c("g", "f", "d")),
class = "data.frame", row.names = c("1",
"2", "3"))

关于r - 组合多列/堆叠多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60872813/

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