簡體   English   中英

將值分配給R中兩個列值的組合

[英]Assign value to combination of two column values in R

我正在尋找一種更簡單的方法來將唯一值分配給來自兩列的字符串值的組合,其中:

  • (colA = 2和colB = 4)和(colA = 4和colB = 2)被賦予相同的ID
  • (colA = 1和colB = 1)不會發生
  • colA和colB是字符串

這是一個最小的解決方案示例,該解決方案 colA和colB包含數字的情況下適用:

set.seed(3)
a <- sample(1:5, 20, replace = T) 
b <- sample(1:5, 20, replace = T) 

df<- data.frame(a, b)

library(dplyr)

df<- df %>% 
      filter(a!=b) %>% 
      mutate(abCombination = a*b) %>%
      arrange(abCombination)

df$abFactor <- factor(df$abCombination, labels = c("combination 1", "combination 2",
                                                   "combination 3", "combination 4",
                                                   "combination 5", "combination 6",
                                                   "combination 7"))

我認為這是一項容易的任務,但無法想到:

  1. 使用字符串的解決方案
  2. 更優雅(簡潔)的編碼方式。

假設我們正在尋找一種適用於numeric/non-numeric的更通用的方法,一種選擇是使用pmin/pmax paste元素,然后執行factor

df %>% 
   filter(a != b) %>%
   mutate(abCombination = sprintf('%s %s', pmin(a, b), pmax(a, b))) %>% 
   arrange(abCombination) %>% 
   mutate(abFactor = factor(abCombination, levels = unique(abCombination), 
        labels = paste('Combination', seq_len(n_distinct(abCombination))) ))

暫無
暫無

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

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