【问题标题】:How to stack columns of data-frame in r?如何在r中堆叠数据框列?
【发布时间】:2019-12-03 17:45:37
【问题描述】:

我有一个具有以下特征的数据框:

Z Y X1 X2 X3 X4 X5 ... X30 

A n1 1 2 1 2 1 2 1      2

B n2 1 2 1 2 1 2 1      2

C n3 1 2 1 2 1 2 1      2

D n4 1 2 1 2 1 2 1      2

.
.
. 

我的目的是将列 x1、x2、... x30 堆叠起来,并将新列与列 z、y 和 x 相关联。有些是这样的:

Newcolumn zyx
1                    x-y-z

...我需要这样的数据框:


  colum1                  colum2  

1 A+n1+X1.headername      1

2 B+n2+X2.headernam       2

3 C+n3X3.headername       1

4 D+n4X4.headername       2

.                         .
.                         .
.                         . 

我正在尝试构建一个函数,但我遇到了一些麻烦 我按照以下代码获取数据框:

df$zy <- paste(df$z,"-",df$y)

之后,我删除了“z”和“y”列:

df$z <- NULL
df$y <- NULL

并将列 df$zy 保存为数据框以供以后使用:

df_zy <- as.data.frame(df$zy)

然后消除原始数据帧的df$xy:

df$xy <- NULL

之后,我将 x1 列保存为数据框,并合并 df_zy 和 x1 列的名称(名称为“1”):

a <- as.data.frame(df$`1`)
b <- cbind(a, df_xy, x_column= 1)
b$zy <- paste(b$x_column,"-",b$` df$zy`)
b$` df$zy ` <- NULL
b$ x_column <- NULL
colnames(b)
names(b)[names(b) == "b$`1`"] <- "new_column"

这有效,但仅适用于 x1 列,我需要 x1 到 x30,并堆叠所有新列

有人对这个问题有答案吗?谢谢!

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以使用tidyrdplyr 库:

    library(dplyr)
    library(tidyr)
    df_zy = df %>% pivot_longer(., cols = starts_with("X"), names_to = "Variables", values_to = "Value") %>%
      mutate(NewColumn = paste0(Z,"-",Y,"-",Variables)) %>% select(NewColumn, Value)
    

    你会得到:

    > df_zy
    # A tibble: 8 x 2
      NewColumn Value
      <chr>     <dbl>
    1 A-n1-X1       1
    2 A-n1-X2       2
    3 B-n2-X1       1
    4 B-n2-X2       2
    5 C-n3-X1       1
    6 C-n3-X2       2
    7 D-n4-X1       1
    8 D-n4-X2       2
    

    数据

    df = data.frame("Z" = LETTERS[1:4],
                    "Y" = c("n1","n2","n3","n4"),
                    "X1" = c(1,1,1,1),
                    "X2" = c(2,2,2,2))
    

    这是你要找的吗?

    【讨论】:

    猜你喜欢
    • 2020-03-28
    • 2019-04-11
    • 2020-11-12
    • 1970-01-01
    • 2021-06-17
    • 2017-04-29
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多