【问题标题】:How to swap the values in two columns in R?如何交换R中两列中的值?
【发布时间】:2018-07-17 12:50:55
【问题描述】:
V1    V2
 5     6
 4     4
 2     5

如何交换这两个列向量中的值。所以结果是:

V1    V2
 6     5
 4     4
 5     2

【问题讨论】:

  • 您可以使用colnames(x) <- c("V2", "V1")重命名列
  • @akash87 有没有办法在不更改名称的情况下做到这一点,而只是交换值?
  • 一旦重命名我相信操作需要重新排序它们以符合预期的输出。 x <- x[rev(colnames(x))]
  • @agenis 我是否再次输入列名?在 colnames(x) 内部?
  • 我不明白你为什么不接受重命名列,特别是当你在 dplyr 包中有像“rename_at”这样的好工具,甚至接受正则表达式时(我相信你的实际数据是比 V1 和 V2 复杂一点...)

标签: r vector multiple-columns swap


【解决方案1】:

最简单的方法可能是:

df[1:2] <- df[2:1]

也就是说,它交换值而不是列名。

更多编程方式:

c2swap <- c("V1", "V2")
df[c2swap] <- df[rev(c2swap)]

【讨论】:

  • 哇,这很完美,显然,我一直在尝试使用 if_else,但它的行为并不像预期的那样!但是您的解决方案非常有效!
【解决方案2】:

最简单的方法:

tmp <- df[1]
df[1] <- df[2]
df[2] <- tmp

【讨论】:

    【解决方案3】:

    我与data.table 合作,比如dt。就我而言,

    dt[1:2] <- dt[2:1]
    

    交换第一行和第二行,而

    dt[,1:2] <- dt[,2:1]
    

    交换保持相同名称的第一列和第二列的值。

    【讨论】:

    • 能否提供一个完整的例子(包括加载data.table等)?
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2022-01-18
    • 2014-02-24
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多