gpt4 book ai didi

r - 在R中,合并两个数据框,填充空白

转载 作者:行者123 更新时间:2023-12-04 05:04:10 26 4
gpt4 key购买 nike

假设我有以下两个数据框:

big.table <- data.frame("idx" = 1:100)

small.table <- data.frame("idx" = sample(1:100, 10), "color" = sample(colors(),10))

我想像这样将它们合并在一起:
merge(small.table, big.table, by = "idx", all.y=TRUE)

idx color
1 1 <NA>
2 2 <NA>
3 3 salmon2
4 4 <NA>
5 5 <NA>
6 6 <NA>
...
20 20 <NA>
21 21 <NA>
22 22 blue4
23 23 grey99
24 24 <NA>
25 25 <NA>
26 26 <NA>
...

现在,我需要在表格下方的“颜色”列中填充值,以便将所有NA设置为表格中之前的值。

笔记:
问题涉及从计算机程序生成的日志文件,而不是任何标准日志格式。此日志文件中的行块属于“过程”,该“过程”在该块的第一行中标识。我已经在日志文件的相关行中提取了信息,其中大部分都属于一个进程,并创建了一个包含该信息的数据表(行号,时间戳等)。现在,我需要在该表中填写与具有行号的small.table中的每一行相对应的“进程”名称。

big.table顶部的行可能没有“过程”(在上面的示例中为颜色)。这些行应保持不适用。

一旦第一个“流程”开始,该流程的起始行和下一个之间的每一行都属于第一个流程。当第二个处理开始时,该处理开始线和下一个处理开始线之间的每一行都属于第二个处理。等等。流程行永远不会与我收集到日志文件数据框中的其他行相同。

我的计划是将big.table创建为所有日志行号的序列,并将小表合并到其中。然后,我可以“填写”进程名称,并将大表合并到日志文件中,从而仅保留所有已连接的日志文件。

我愿意接受其他方法。

最佳答案

听起来您需要软件包 zoo 中的na.locf(代表上一次进行的最后观察):

library(zoo)
tbl <- merge(small.table, big.table, by = "idx", all.y=TRUE)
tbl$color2 <- na.locf(tbl$color,na.rm = FALSE)

关于r - 在R中,合并两个数据框,填充空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843887/

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