【问题标题】:How to replace one column with another using data.table?如何使用 data.table 将一列替换为另一列?
【发布时间】:2021-01-15 13:20:32
【问题描述】:

我有一个数据框:

ID      value1   value2
1        f        a
2        k        p
3        c        j

我想用 value2 中的值替换列 value1 中的值并删除列 value2。所以想要的结果是:

ID      value1   
1        a        
2        p        
3        j        

我需要用 data.table 来做。我需要用函数来做,而不是从头开始重新创建数据框。

【问题讨论】:

    标签: r dataframe data.table


    【解决方案1】:
    library(data.table)
    setDT(df)
    df[, c("value1", "value2") := .(value2, NULL)]
    

    setnames()

    df[, value1 := NULL]
    setnames(df, "value2", "value1")
    

    数据

    df <- data.frame(
      ID = 1:3, value1 = c("f", "k", "c"), value2 = c("a", "p", "j")
    )
    

    【讨论】:

    • 你的第一个方法很酷!赞成您的回答。
    【解决方案2】:

    您可以执行以下操作

    > setDT(df)[, .(ID, value1 = value2)]
       ID value1
    1:  1      a
    2:  2      p
    3:  3      j
    

    数据

    > dput(df)
    structure(list(ID = 1:3, value1 = c("f", "k", "c"), value2 = c("a", 
    "p", "j")), class = "data.frame", row.names = c(NA, -3L))
    

    【讨论】:

      【解决方案3】:

      使用dplyr

      library(dplyr)
      df %>%
         select(ID, value1 = value2)
      

      数据

      df <- structure(list(ID = 1:3, value1 = c("f", "k", "c"), value2 = c("a", 
      "p", "j")), class = "data.frame", row.names = c(NA, -3L))
      

      【讨论】:

        【解决方案4】:

        使用data.table,您可以:

        library(data.table)
        setDT(df)
        df[, value1:=value2][, value2:=NULL]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-24
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 2022-01-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多