2014-05-01 73 views
0

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

 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另外我不确定如何将该列插入到特定位置,例如事件列之后。

回答

2

if未被矢量化,用y <- ifelse(x == 0, 1, 0)替换。

你并不真的需要在我看来,一个自定义函数:

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

应该工作,例如,如果事件== 1,则op_event的值为1,如果事件== 0,那么op_event应该是1 –

+1

@空假设是。 –

+0

@SeñorO什么是重新安排列顺序的最佳方式,例如在事件列后获取列op_event? –