【问题标题】:Creating new column according to the position of other column in R根据R中其他列的位置创建新列
【发布时间】:2019-10-22 14:25:43
【问题描述】:

对于以下数据集,

    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。 任何帮助表示赞赏。

【问题讨论】:

    标签: r dataframe multiple-columns


    【解决方案1】:

    使用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
    

    【讨论】:

    • 还从基础 R 中添加 transform(mydat,New = x[order(sl)])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2023-01-24
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多