将数字索引添加到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