根据R中其他列的位置创建新列

时间:2019-10-22 14:25:43

标签: r dataframe multiple-columns

对于以下数据集,

    mydat=data.frame(sl=c(1,3,8,10,4,6,5,7,2,9),x=c(50,42,15,49,56,30,66,52,40,38))
mydat
   sl  x
1   1 50
2   3 42
3   8 15
4  10 49
5   4 56
6   6 30
7   5 66
8   7 52
9   2 40
10  9 38

我想根据sl的位置创建另一列,新列的第一个值是xval应该是50,第二个值是40 ,第三个值为42。因此,新列应类似于xval=50,40,42,56,...,49。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

使用data.table

require(data.table); setDT(mydat)
mydat[, New := x[order(sl)]]

使用Base R

Onyambu的贡献:

transform(mydat,New = x[order(sl)])

或者:

mydat$New = mydat$x[order(mydat$sl)]

结果

> mydat
    sl  x New
 1:  1 50  50
 2:  3 42  40
 3:  8 15  42
 4: 10 49  56
 5:  4 56  66
 6:  6 30  30
 7:  5 66  52
 8:  7 52  15
 9:  2 40  38
10:  9 38  49