Создание нового столбца в соответствии с положением другого столбца в R - PullRequest
1 голос
/ 22 октября 2019

Для следующего набора данных,

    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 Ответ

2 голосов
/ 22 октября 2019

Использование data.table

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

Использование Base R

Вклад Онямбу:

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
...