gpt4 book ai didi

r - 如何为R中的列中的元素分配顺序?

转载 作者:行者123 更新时间:2023-12-04 19:05:15 28 4
gpt4 key购买 nike

在以下数据集中:

Day   Place   Name
22 X A
22 X A
22 X B
22 X A
22 Y C
22 Y C
22 Y D
23 X B
23 X A

如何使用 R 按以下顺序为变量 Name 分配编号:
Day   Place   Name  Number
22 X A 1
22 X A 1
22 X B 2
22 X A 1
22 Y C 1
22 Y C 1
22 Y D 2
23 X B 1
23 X A 2

简而言之,我需要根据名称在特定日期和特定地点出现的顺序对其进行编号。

最佳答案

在基 R 中使用 tapply :

dat$Number <- 
unlist(tapply(dat$Name,paste(dat$Day,dat$Place),
FUN=function(x){
y <- as.character(x)
as.integer(factor(y,levels=unique(y)))
}))

# Day Place Name Number
# 1 22 X A 1
# 2 22 X A 1
# 3 22 X B 2
# 4 22 Y C 1
# 5 22 Y C 1
# 6 22 Y D 2
# 7 23 X B 1
# 8 23 X A 2

主意
  • 使用 tapply 按日期和地点分组
  • 对于每个组,创建一个将 Name 强制转换为保持相同级别顺序的因子。
  • 将创建的因子强制为整数以获得最终结果。

  • 使用 data.table(糖语法):
    library(data.table)
    setDT(dat)[,Number := {
    y <- as.character(Name)
    as.integer(factor(y,levels=unique(y)))
    },"Day,Place"]

    Day Place Name Number
    1: 22 X A 1
    2: 22 X A 1
    3: 22 X B 2
    4: 22 Y C 1
    5: 22 Y C 1
    6: 22 Y D 2
    7: 23 X B 1
    8: 23 X A 2

    关于r - 如何为R中的列中的元素分配顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26606908/

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