r - 具有唯一值数字的列
问题描述
我在 R 工作室中有一个看起来像这样的小标题,我需要添加一个列,为每个名称提供相同的唯一编号。所以它应该看起来像这样
我已经尝试过类似下面的代码:
people >%>
gorup_by(Name) >%>
mutate(NameID = seq(1, along.with = unique(Name))) >%>
ungroup()
此代码为所有列提供了相同的编号。所以它给了我每个 NameID 的数字 1。
我还尝试了以下代码:
people >%>
gorup_by(Name) >%>
mutate(NameID = seq(1, length(unique(Name)))) >%>
ungroup()
我得到了同样的结果。我认为我可能需要使用if function
or ifelse
,但我真的不知道正确的语法应该是什么。
抱歉格式,这是我第一次在这里提问,我需要学习更好地写东西
解决方案
使用dplyr
1.0.0,我们可以使用cur_group_id
library(dplyr)
df1 %>%
group_by(Name = factor(Name, levels = unique(Name))) %>%
mutate(NameID = cur_group_id())
或者不使用group_by
,它可以是match
df1 %>%
mutate(NameID = match(Name, unique(Name)))
factor
或强制integer
df1 %>%
mutate(NameID = as.integer(factor(Name, levels = unique(Name))))
推荐阅读
- ios - 通过从外部点击按钮调用视图动画
- c# - 如何:从 Cosmos DB 获取最新(最新)文档?
- python - python中带有数学解析错误的计算器
- javascript - 为什么所有的方向都写成这种形式——水平:function(x,y,i) { return {x: x+i, y: y }; }。请解释代码
- python - Pandas - 计算重复值
- python - 在python中处理一个非常大的数字
- flutter - Flutter:在 CupertinoActionSheet 内切换没有更新状态
- html - 在 VS Code 中为 html 段落标签添加标签 p 会导致 get propertyName()
- python - 如何根据给定输入字符串的第一个结果按顺序获得弹性搜索结果?
- c#-8.0 - 是否有任何理由不总是使用 C# 8.0 的不可为空的引用类型?