gpt4 book ai didi

r - 在 R 中每隔一列堆叠一次

转载 作者:行者123 更新时间:2023-12-05 05:35:52 24 4
gpt4 key购买 nike

我希望在 R 中的前一列下堆叠所有其他列。有什么建议吗?

例如:

<表类="s-表"><头>c1c2c3c4<正文>一个1D4B2E5C3F6
dat <- data.frame(
c1 = c("A", "B", "C"),
c2 = c(1, 2, 3),
c3 = c("D", "E", "F"),
c4 = c(4, 5, 6))

看起来像这样:

<表类="s-表"><头>c1c2<正文>一个D14BE25CF36
dat2 <- data.frame(
c1 = c("A", 1, "B", 2, "C", 3),
c2 = c("D", 4, "E", 5, "F", 6))

提前致谢。

最佳答案

stack() 的基本方法:

as.data.frame(sapply(seq(1, ncol(dat), 2), \(x) stack(dat[x:(x+1)])[[1]]))

# V1 V2
# 1 A D
# 2 B E
# 3 C F
# 4 1 4
# 5 2 5
# 6 3 6

您还可以使用结构格式重命名数据并将其传递给 tidyr::pivot_longer():

library(dplyr)
library(tidyr)

dat %>%
rename_with(~ paste0('c', ceiling(seq_along(.x) / 2), '_', 1:2)) %>%
mutate(across(, as.character)) %>%
pivot_longer(everything(), names_to = c(".value", NA), names_sep = '_')

# # A tibble: 6 × 2
# c1 c2
# <chr> <chr>
# 1 A D
# 2 1 4
# 3 B E
# 4 2 5
# 5 C F
# 6 3 6

rename 行将 c1 - c4 转换为 c1_1, c1_2, c2_1, c2_2

关于r - 在 R 中每隔一列堆叠一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73411053/

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