gpt4 book ai didi

r - cbind 工作日匹配的两个数据帧

转载 作者:行者123 更新时间:2023-12-01 11:17:59 26 4
gpt4 key购买 nike

在提问之前,我搜索并阅读了许多关于 stackoverflow 的其他问题,并尝试了 dplyr 包中的 join,但没有一个给出我想要的结果。

我有两个 dfs 并想将它们组合起来,使 df1$col1 中的第一个值 Wed 与第一次出现的 Wed 相匹配在 df2$col3 中,这两个 df 组合在一起,如 df3 所示

df1 <- data.frame(col1 = c('Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon',
'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun',
'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',
'Sun', 'Mon', 'Tue'),
col2 = c(102, 101, 100, 107, 91, 80, 80, 68, 65, 69,
69, 74, 66, 58, 59, 64, 76, 70, 73, 71, 60))

df2 <- data.frame(col3 = c('Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun',
'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',
'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri',
'Sat', 'Sun', 'Mon'),
col4 = c(107, 91, 70, 73, 71, 80, 80, 58, 59, 64, 68,
65, 102, 101, 100, 69, 69, 74, 66, 76, 60))

这就是我想要的!

df3 <- data.frame(col1 = c('Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue'), 
col2 = c(102, 101, 100, 107, 91, 80, 80, 68, 65, 69, 69, 74, 66, 58, 59, 64, 76, 70, 73, 71, 60),
col3 = c('Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', NA),
col4 = c(91, 70, 73, 71, 80, 80, 58, 59, 64, 68, 65, 102, 101, 100, 69, 69, 74, 66, 76, 60, NA))

col1 col2 col3 col4
Wed 102 Wed 91
Thu 101 Thu 70
Fri 100 Fri 73
Sat 107 Sat 71
Sun 91 Sun 80
Mon 80 Mon 80
Tue 80 Tue 58
Wed 68 Wed 59
Thu 65 Thu 64
Fri 69 Fri 68
Sat 69 Sat 65
Sun 74 Sun 102
Mon 66 Mon 101
Tue 58 Tue 100
Wed 59 Wed 69
Thu 64 Thu 69
Fri 76 Fri 74
Sat 70 Sat 66
Sun 73 Sun 76
Mon 71 Mon 60
Tue 60 NA NA

重要的部分是让 df2 删除 df2$col3 中的行,直到它与 df1$col1 中的工作日匹配为止/p>

解决方法:我使用了 gdata 包中的 cbindX 函数df3 = cbindX(df1, df2)

最佳答案

我们可以分两步完成:

找到df2到df1的第一个匹配条目 cbind 他们用 NA 填充空条目。有几种方法可以绑定(bind)不等长的数据帧。你可以找到一些here .我选择使用 qpcr:::cbind.na()

i1 <- which(df1$col1[1] == df2$col3)[1]
qpcR:::cbind.na(df1, df2[i1:nrow(df2),])

这给出了,

   col1 col2 col3 col4
2 Wed 102 Wed 91
3 Thu 101 Thu 70
4 Fri 100 Fri 73
5 Sat 107 Sat 71
6 Sun 91 Sun 80
7 Mon 80 Mon 80
8 Tue 80 Tue 58
9 Wed 68 Wed 59
10 Thu 65 Thu 64
11 Fri 69 Fri 68
12 Sat 69 Sat 65
13 Sun 74 Sun 102
14 Mon 66 Mon 101
15 Tue 58 Tue 100
16 Wed 59 Wed 69
17 Thu 64 Thu 69
18 Fri 76 Fri 74
19 Sat 70 Sat 66
20 Sun 73 Sun 76
21 Mon 71 Mon 60
1 Tue 60 <NA> NA

关于r - cbind 工作日匹配的两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48164051/

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