我有以下数据集:
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/