将数字索引添加到R中另一列中每个唯一值的行中

您好,我有一个数据框,例如

Names;Sp 
Unknown;SP1
Unknown;SP1
Unknown;SP1
Unknown;SP2
Unknown;SP2
Unknown;SP3
Unknown;SP4
OK;SP4
OK;SP5
Unknown;SPA
Unknown;SPB
Unknown;SP1

我想_Number为每个未知 df$Names和每个添加一个df$Sp

这是所需的输出:

Names;Sp 
Unknown_1;SP1
Unknown_1;SP1
Unknown_1;SP1
Unknown_2;SP2
Unknown_2;SP2
Unknown_3;SP3
Unknown_4;SP4
OK;SP4
OK;SP5
Unknown_5;SPA
Unknown_6;SPB
Unknown_1;SP1

这是数据

structure(list(Names = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 1L, 2L, 2L, 2L), .Label = c("OK", "Unknown"), class = "factor"), 
    Sp = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 5L, 6L, 
    7L, 1L), .Label = c("SP1", "SP2", "SP3", "SP4", "SP5", "SPA", 
    "SPB"), class = "factor")), class = "data.frame", row.names = c(NA, 
-12L))

回答

使用data.table包,您可以按如下方式解决您的问题(假设您data.frame的名称为df):

library(data.table)

setDT(df)[Names == "Unknown", Names := paste0("Unknown_", .GRP), by=Sp]

#         Names     Sp
#  1: Unknown_1    SP1
#  2: Unknown_1    SP1
#  3: Unknown_1    SP1
#  4: Unknown_2    SP2
#  5: Unknown_2    SP2
#  6: Unknown_3    SP3
#  7: Unknown_4    SP4
#  8:        OK    SP4
#  9:        OK    SP5
# 10: Unknown_5    SPA
# 11: Unknown_6    SPB
# 12: Unknown_1    SP1


以上是将数字索引添加到R中另一列中每个唯一值的行中的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>