簡體   English   中英

R-通過多種因素創建ID

[英]R - Create ID by multiple factors

如何創建一個新的ID標簽,以匯總存儲在兩個因素中的信息。 我想將一個因素嵌套(!?)放在另一個因素中。

作為一個小例子:比方說,我調查了很多樹木,現在我想給一個標簽添加到每個檢查的分支,讓我的樹的數量和樹分支的數量。 如果所有分支都只有一個持續的ID,那將是不必要和令人困惑的。

示例代碼:

mydata = data.frame(tree   = rep(letters[1:3], each = 20),
                    branch = rep(round(runif(12)*1000, 0), each = 5),
                    values = runif(60))

(請不要問我,為什么分支有這么奇怪的數字,這只是一個例子!)

當然,我可以只使用interaction(mydata$treat, mydata$labels)答案所示。 另外,對於唯一ID,我可以使用this 但是兩者都會給我一個持續的ID,該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 = "."))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM