【问题标题】:Insert values from another column从另一列插入值
【发布时间】:2017-07-21 13:26:12
【问题描述】:

如何组合列的值?像这样:

预期输出:

【问题讨论】:

  • 看看rbind
  • 请不要发布这样的数据。使用?dput 或纯文本复制/粘贴,以便我们可以将数据放入R 会话中。

标签: r datatable


【解决方案1】:

另一个使用rbind的选项。

d <- seq(1, 27)
m <- matrix(d, nrow=3, byrow=TRUE)

然后m 将如下所示(模仿您的输入数据):

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    2    3    4    5    6    7    8    9
[2,]   10   11   12   13   14   15   16   17   18
[3,]   19   20   21   22   23   24   25   26   27

然后你可以在你的输入块上调用rbind;对于更大的矩阵,您可能希望在 for-loop 中执行此操作:

mnew = data.frame(rbind(m[, 1:3], m[ ,4:6], m[,7:9]))
names(mnew) <- c('V1', 'V2', 'V3')

这会产生所需的输出:

  V1 V2 V3
1  1  2  3
2 10 11 12
3 19 20 21
4  4  5  6
5 13 14 15
6 22 23 24
7  7  8  9
8 16 17 18
9 25 26 27

【讨论】:

    【解决方案2】:

    首先您必须说明要合并哪些列,但考虑到 dat 是数据框的名称,您可以这样做

    dt <- data.frame(c(dat$V1,dat$V4,dat$V7),c(dat$V2,dat$V5,dat$V8),c(dat$V3,dat$V6,dat$V9))
    

    然后使用names(dt) &lt;- c("V1","V2","V3")重命名您的列

    【讨论】:

    • 如果你想使用rbind,你必须将你的数据框分成3个数据框,然后重命名列并使用rbind
    【解决方案3】:

    假设您的基本数据框名为 df1 正如 Orhan 所说,使用 rbind,您必须拆分数据框并重命名列:

    a <- df1[1:3]
    names(a) <- c("V1","V2", "V3")
    b <- df1[4:6]
    names(b) <- c("V1","V2", "V3")
    c <- df1[7:9]
    names(c) <- c("V1","V2", "V3")
    df2<- rbind(a,b,c)
    

    【讨论】:

    • 与我的相似但也照顾不同的名字,+1
    【解决方案4】:

    这可以通过将 df 更改为 á 矩阵然后使用 rbind 来轻松执行

    df <- as.matrix(df)
    df <- rbind(df[,1:3],df[,4:6],df[,7:9])
    

    然后您可以选择使用 as.data.frame() 将其转换回 data.frame

    【讨论】:

      猜你喜欢
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多