【问题标题】:How to attribute sequential numbers to elements in a data frame?如何将序号归因于数据框中的元素?
【发布时间】:2017-03-20 15:33:29
【问题描述】:

我有一个带有 ID(名称)的数据框,如下所示:

head(ped1)
 V1       V2       V3
 31701    31272    25526
 31702    31272    26002
 31703    31272    25861
 31704    31272    24324
 31705    31272    31413
 31706    31272    31701

我需要为第一列的每个元素赋予新的 ID(序号)。此外,V1 列中的 ID 可以显示在 V2 和 V3 中。

所以 ID 也必须在其他列中匹配,如下所示:

     head(ped1)
     V1       V2       V3
     1        7        8
     2        7        9
     3        7        10
     4        7        11
     5        7        12
     6        7        1

如何分配新 ID?

【问题讨论】:

  • 请使用 ID、后代等的虚拟列名来忠实地表示您的问题。并强调一个归因示例,请参阅how to post a great reproducible example 了解更多详情
  • 对不起,我是新来的。是不是更清楚了?

标签: r dataframe transform


【解决方案1】:

这是在基础 R 中使用matchsapply 对使用unlist 获得的唯一向量的方法。

# get IDs as a vector
ids <- unique(unlist(df))

# produce data.frame with new ids by feeding each variable to match, using ids as table
data.frame(lapply(df, match, table=ids))
  V1 V2 V3
1  1  7  8
2  2  7  9
3  3  7 10
4  4  7 11
5  5  7 12
6  6  7  1

数据

df <- read.table(header=TRUE, text="V1       V2       V3
 31701    31272    25526
31702    31272    26002
31703    31272    25861
31704    31272    24324
31705    31272    31413
31706    31272    31701")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 2015-05-08
    • 2019-03-13
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多