R - 通过多种因素创建 ID
R - Create ID by multiple factors
如何创建一个新的 ID 标签来总结存储在两个因素中的信息。我希望一个因素 嵌套 (!?) 在另一个因素中。
举个小例子:假设我调查了很多树,现在我想为每个检查过的树枝添加一个标签,告诉我树的编号和树枝的编号 =40=]树。如果所有分支机构都只有一个正在进行的 ID,那将是不必要和混乱的。
示例代码:
mydata = data.frame(tree = rep(letters[1:3], each = 20),
branch = rep(round(runif(12)*1000, 0), each = 5),
values = runif(60))
(请不要问我,为什么分行会有这么奇怪的数字,这只是一个例子!)
当然,我可以像this answer suggests. Also, for a unique ID I could use something like 一样使用interaction(mydata$treat, mydata$labels)
。但两者都会给我一个不区分树木的持续 ID!我也可以使用一个又长又复杂的 for
循环,但我想要一个简单的答案(因为我希望有一个...)。
预期输出:
最后应该看起来像新的 ID 列。
mydata = data.frame(tree = rep(letters[1:3],each = 20),
branch = rep(round(runif(12)*1000, 0), each = 5),
values = runif(60),
ID = rep(rep(1:4, each = 5)));mydata
mydata$ID = interaction(mydata$tree, mydata$ID)
编辑:
所以@suchait 评论中的解决方案对示例数据很有效 实际上给了我一个不区分树的持续 ID。另外,我不了解 data.table
包,我无法了解它的详细工作原理。当我将解决方案应用于我的 tibble
时,它不会起作用(它再次为我提供了一个忽略一个因素的持续 ID)。因此,我真的很想看到 dplyr
解决方案或类似的东西。
dplyr 解决方案使用 group_by
将每棵树的分支分别分组,然后将分支 ID 转换为因子并将因子编号用作分支 ID
library(tidyverse)
tmp <- mydata %>%
group_by(tree) %>%
mutate(ID = str_c(tree, as.numeric(as.factor(branch)), sep = "."))
如何创建一个新的 ID 标签来总结存储在两个因素中的信息。我希望一个因素 嵌套 (!?) 在另一个因素中。
举个小例子:假设我调查了很多树,现在我想为每个检查过的树枝添加一个标签,告诉我树的编号和树枝的编号 =40=]树。如果所有分支机构都只有一个正在进行的 ID,那将是不必要和混乱的。
示例代码:
mydata = data.frame(tree = rep(letters[1:3], each = 20),
branch = rep(round(runif(12)*1000, 0), each = 5),
values = runif(60))
(请不要问我,为什么分行会有这么奇怪的数字,这只是一个例子!)
当然,我可以像this answer suggests. Also, for a unique ID I could use something like interaction(mydata$treat, mydata$labels)
。但两者都会给我一个不区分树木的持续 ID!我也可以使用一个又长又复杂的 for
循环,但我想要一个简单的答案(因为我希望有一个...)。
预期输出:
最后应该看起来像新的 ID 列。
mydata = data.frame(tree = rep(letters[1:3],each = 20),
branch = rep(round(runif(12)*1000, 0), each = 5),
values = runif(60),
ID = rep(rep(1:4, each = 5)));mydata
mydata$ID = interaction(mydata$tree, mydata$ID)
编辑:
所以@suchait 评论中的解决方案对示例数据很有效 实际上给了我一个不区分树的持续 ID。另外,我不了解 data.table
包,我无法了解它的详细工作原理。当我将解决方案应用于我的 tibble
时,它不会起作用(它再次为我提供了一个忽略一个因素的持续 ID)。因此,我真的很想看到 dplyr
解决方案或类似的东西。
dplyr 解决方案使用 group_by
将每棵树的分支分别分组,然后将分支 ID 转换为因子并将因子编号用作分支 ID
library(tidyverse)
tmp <- mydata %>%
group_by(tree) %>%
mutate(ID = str_c(tree, as.numeric(as.factor(branch)), sep = "."))