R:创建组内元素的组合,并将与新数据框中的组合相关的数字相加

标签 r dataframe combinations

我有以下数据集:

 Letter ID Number
   A    A1   1
   A    A2   2
   A    A3   3
   B    B1   1
   B    B2   2
   B    B3   3
   B    B4   4

我的目标首先是在同一个“字母”组中创建所有可能的 ID 组合。例如,对于字母 A,它只有三种组合:A1-A2、A2-A3 和 A1-A3。以不同方式排序的相同 ID 不算作新组合,因此例如 A1-A2 与 A2-A1 相同。

然后,在这些组合中,我想将与这些 ID 关联的“数字”列中的数字相加。因此,对于与“数字”列中的 1 和 2 相关联的组合 A1-A2,这将导致数字 1+2=3。

最后,我想将 ID 组合、添加的数字和原始字母放入新的数据框中。像这样的事情:

Letter Combination Add.Number
   A    A1-A2        3
   A    A2-A3        5
   A    A1-A3        4
   B    B1-B2        3
   B    B2-B3        5
   B    B3-B4        7
   B    B1-B3        4
   B    B2-B4        6
   B    B1-B4        5

如何在 R 中执行此操作,最好使用包 dplyr?

最佳答案

library(dplyr)
  

letter <- c("A","A","A","B","B","B","B")

df <-
  data.frame(letter) %>% 
  group_by(letter) %>% 
  mutate(
    number = row_number(),
    id = paste0(letter,number)
  ) 

df %>% 
  full_join(df,by = "letter") %>% 
  filter(number.x < number.y) %>% 
  mutate(
    combination = paste0(id.x,"-",id.y),
    add_number = number.x + number.y) %>% 
  select(letter,combination,add_number)

# A tibble: 9 x 3
# Groups:   letter [2]
  letter combination add_number
  <chr>  <chr>            <int>
1 A      A1-A2                3
2 A      A1-A3                4
3 A      A2-A3                5
4 B      B1-B2                3
5 B      B1-B3                4
6 B      B1-B4                5
7 B      B2-B3                5
8 B      B2-B4                6
9 B      B3-B4                7

关于R:创建组内元素的组合,并将与新数据框中的组合相关的数字相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74662293/

相关文章:

r - R按符号分割字符串

r - 在 R 中选择最大列值

r - 基于窗口大小的 Shiny 动态内容(如 CSS 媒体查询)

R——比较计算的相关性

python - python中列表的详尽组合

r - 在 R 中的矩阵中的特定列对之间应用函数

python - 使用 pandas GroupBy 获取每个组的统计信息(例如计数、平均值等)?

python - 索引 KFold split 方法返回的 DataFrame 是 iloc 还是 loc?

python - 使用 pandas 将过滤器列表应用于来自列表的数据框

python - 如何调整 Numpy 数组的大小以添加/替换行,其组合由数组每行中的值确定