gpt4 book ai didi

r - 通过 dplyr 中的主题 ID 和匹配序列 ID 连接两个数据集

转载 作者:行者123 更新时间:2023-12-02 07:20:50 25 4
gpt4 key购买 nike

我有两个数据集,我想合并成一个数据集:

set.seed(111)
dat1 = data.frame(subject = paste0("A-",c(1,1,2,2,3,3,3,4,4,5)),
seq1 = c(2, 3, 7, 8, 2, 9, 11, 10, 11, 16),
text1 = sample(LETTERS, 10))
dat1

subject seq1 text1
1 A-1 2 P
2 A-1 3 S
3 A-2 7 I
4 A-2 8 L
5 A-3 2 X
6 A-3 9 V
7 A-3 11 A
8 A-4 10 K
9 A-4 11 H
10 A-5 16 B

set.seed(999)
dat2 = data.frame(subject = paste0("A-", c(1,1,1,2,2,3,3,3,4,5,5,5,5)),
seq2 = c(2, 3, 4, 7, 8, 2, 9, 11, 10, 16, 17, 18, 19),
text2 = sample(LETTERS, 13))
dat2
subject seq2 text2
1 A-1 2 K
2 A-1 3 O
3 A-1 4 C
4 A-2 7 T
5 A-2 8 R
6 A-3 2 X
7 A-3 9 M
8 A-3 11 B
9 A-4 10 H
10 A-5 16 Z
11 A-5 17 E
12 A-5 18 I
13 A-5 19 A

两个数据集都具有与第一列中相同的subject,但每个subject 的观察数量可能不同(例如,在dat1,受试者A-1有两条记录(seq1有2和3),但是在dat2中,同一个受试者A-1有3条记录(seq2 有 2、3 和 4)。我希望连接的数据集包含两个数据集中的所有主题,同时在同一行中保留唯一的序列号(seq1 seq2) 与相应的 text1text2。如果一个数据集缺少一个序列 ID 但有相同的序列 ID,则分配 NA在另一个数据集中找到。

最终数据集如下所示:

#    subject seq1 text1 seq2 text2
# 1 A-1 2 P 2 K
# 2 A-1 NA NA 4 C
# 3 A-1 3 S 3 O
# 4 A-2 7 I 7 T
# 5 A-2 8 L 8 R
# 6 A-3 2 X 2 X
# 7 A-3 9 V 9 M
# 8 A-3 11 A 11 B
# 9 A-4 10 K 10 H
# 10 A-4 11 H NA NA
# 11 A-5 16 B 16 Z
# 12 A-5 17 E NA NA
# 13 A-5 18 I NA NA
# 14 A-5 19 A NA NA

如您所见,对于相同的 subject,连接的数据集具有相同的 seq1seq2,并且在缺少序列 ID 的情况下(在 seq1seq2 中),分配一个 NA。感谢您就使用 dplyr 完成此任务提出的建议!

最佳答案

我在每个数据集中创建了一个名为 seq 的新列,然后使用了 full_join

full_join(mutate(dat1, seq = seq1),
mutate(dat2, seq = seq2)) %>%
arrange(subject, seq) %>%
select(-seq)

关于r - 通过 dplyr 中的主题 ID 和匹配序列 ID 连接两个数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com