R:在R数据表中的特定位置插入一列

时间:2014-05-01 16:34:27

标签: r data.table

我有以下数据表

      user_id user_system_days event total_pics 
[1,] 21196680             0     0         124   
[2,] 21197699             0     0           4   
[3,] 21197861             0     0          14   
[4,] 21198820             1     0          21   
[5,] 21199601             0     0           3   
[6,] 21203847             0     0           1   

基于列事件中的值,我想在数据表中插入一列,我的方法是编写一个函数,然后使用该函数返回一个值。

opposite_event  <- function(x) {
  y <- 1
  if (x == 1) 
    y <- 0
  return (y)
}

我调用函数如下:

dt[,op_event:=opposite_event(dt$event)]

这实际上添加了列,但值错误:

      user_id user_system_days event total_pics op_event
[1,] 21196680             0     0         124      0
[2,] 21197699             0     0           4      0
[3,] 21197861             0     0          14      0
[4,] 21198820             1     0          21      0
[5,] 21199601             0     0           3      0
[6,] 21203847             0     0           1      0

根据我的函数,如果dt$event的值为1,则返回值应为0,如果dt$event为0,则返回值应为1另外,我不知道如何将列插入事件列之后的特定位置。

1 个答案:

答案 0 :(得分:2)

if未进行矢量化,请将其替换为y <- ifelse(x == 0, 1, 0)

我认为你真的不需要自定义功能:

dt[,op_event := ifelse(event == 0, 1, 0)]