我在R中有一个 Dataframe ,其中一列包含一个唯一的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
我想创建名为or1
到or10
的变量,这些变量捕获每行值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
,但我知道有一种更好的方法,可能涉及索引。
1条答案
按热度按时间5t7ly7z51#
这样做:
(In如果“id”不是第一列,我会用更健壮的
dat[!colnames(dat) %in% "id"]
替换dat[, -1]
)然后,按照您想要的方式获取列名: