gpt4 book ai didi

r - 创建描述特定值的现有索引位置的新变量

转载 作者:行者123 更新时间:2023-12-01 12:46:09 25 4
gpt4 key购买 nike

我在 R 中有一个数据框,其中一列包含唯一 ID 和 10 个变量,如下所示:

    id V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 555 2 1 10 3 8 9 5 7 4 6
2 681 10 5 4 8 7 3 6 2 9 1
3 2300 8 5 10 2 3 1 6 9 4 7

我想创建名为 or1or10 的变量,它们捕获每行值 1:10 的列位置。

因此,例如,在第一行中,数字 1 出现在名为 V2 的列中,因此 or1 = 2。如果我设法为上面的三行正确执行此操作,我将得到以下内容:

    id or1 or2 or3 or4 or5 or6 or7 or8 or9 or10
1 555 2 1 4 9 7 10 8 5 6 3
2 681 10 8 6 3 2 7 5 4 9 1
3 2300 6 4 5 9 2 7 10 1 8 3

我设法使用一组长得离谱的 if/then 语句创建了 or1,但我知道有一种可能涉及索引的更好方法。非常感谢所有帮助。

最佳答案

这样做:

> ord <- data.frame(id = dat$id, t(apply(dat[, -1], 1, order)))
id X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 555 2 1 4 9 7 10 8 5 6 3
2 681 10 8 6 3 2 7 5 4 9 1
3 2300 6 4 5 9 2 7 10 1 8 3

(如果“id”不是第一列,我会将 dat[, -1] 替换为更健壮的 dat[!colnames(dat) %in% "id "])

然后,要获得与您想要的完全相同的列名:

colnames(ord) <- sub("^X", "or", colnames(ord))

关于r - 创建描述特定值的现有索引位置的新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com