我在CSV文件中有一个非唯一名称列表。我想为此列表中的每个唯一名称分配一个id。所以,如果数据是这样的:
斯泰西
亚当
唐纳德
亚当
格雷格
唐纳德
我希望输出是这样的:
1 Stacy
2亚当
唐纳德3
2亚当
5格雷格
3唐纳德
我尝试过使用match()函数,但这似乎不起作用。任何帮助将不胜感激。
data <- read.csv(file = "mock_data.csv", header = TRUE)
uniqueFirstNames <- unique(data["first_name"])
paste('Number of unique first names: ', nrow(uniqueFirstNames))
indices <- match(x = uniqueFirstNames, table = data["first_name"])
上面的指数给我一个NA
答案 0 :(得分:2)
df <- data.frame(names = c("Stacy", "Adam","Donald","Adam","Greg","Donald"))
##using factor
df$flag <- with(df, as.numeric(factor(names,levels=unique(names) )))
##Using match
df$flag2 <- with(df, match(names, unique(names)))
names flag flag2
Stacy 1 1
Adam 2 2
Donald 3 3
Adam 2 2
Greg 4 4
Donald 3 3