相关疑难解决方法(0)

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

说我有这两个数据框:

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

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

我想像这样将它们合并在一起:

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>
...
Run Code Online (Sandbox Code Playgroud)

现在我需要填充表格中"颜色"列中的值,以便将所有NA设置为表格中之前的值.

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

对于big.table顶部的行,可能没有"进程"(上例中的颜色).那些线应该保持NA.

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

我的计划是将big.table创建为所有日志行号的序列,并将小表合并到它.然后我可以"填写"进程名称并将大表合并到日志文件中,只保留日志文件中包含的所有内容.

我对其他方法持开放态度.

merge r

8
推荐指数
2
解决办法
4782
查看次数

在X [Y,j]合并的j中访问具有重复名称的Y列

假设我有这样的数据:

set.seed(1)
DT <- data.table(id=rep(1:3,each=3),y=1997L+sample(1:9,9))
DT2<- data.table(id=1:3,y=1997L+sample(1:3,3))
Run Code Online (Sandbox Code Playgroud)

我想在与DT合并后使用DT2 $ y.我看到这个列是y.1在合并后命名的

setkey(DT,id)
names(DT[DT2])
# [1] "id"  "y"   "y.1"
DT[DT2][,y.1]
# [1] 1998 1998 1998 2000 2000 2000 1999 1999 1999
Run Code Online (Sandbox Code Playgroud)

但是,我不能在j以下名称中使用它:

DT[DT2,y.1]
# Error in `[.data.table`(DT, DT2, y.1) : object 'y.1' not found
Run Code Online (Sandbox Code Playgroud)

我应该在这里使用的秘密前缀或后缀是什么?

r data.table

5
推荐指数
1
解决办法
235
查看次数

使用来自同一数据框的数据填充data.frame中的缺失值

我正在尝试使用最近的前一列数据回填一个完全外连接的表.

我看起来像数据框..(没有行的两边都是NA,表格是按日期排序的).

              date     X         Y
2012-07-05 00:01:19   0.0122     NA
2012-07-05 03:19:34   0.0121     NA
2012-07-05 03:19:56   0.0121   0.027
2012-07-05 03:20:31   0.0121     NA
2012-07-05 04:19:56   0.0121   0.028
2012-07-05 04:20:31   0.0121     NA
2012-07-05 04:20:50   0.0121     NA
2012-07-05 04:22:29   0.0121   0.027
2012-07-05 04:24:37   0.0121     NA
2012-07-05 20:48:45   0.0121     NA
2012-07-05 23:02:34    NA      0.029
2012-07-05 23:30:45    NA      0.029
Run Code Online (Sandbox Code Playgroud)

对此,我期待..

  1. 保留非数据缺失的行.
  2. 如果任何一侧缺失(NA),则用"最近的前一行"填充它,该行具有有效的相反侧值.

结果,我想让桌子看起来像......

              date     X         Y
2012-07-05 00:01:19   0.0122     NA
2012-07-05 03:19:34   0.0121     NA
2012-07-05 03:19:56   0.0121   0.027
2012-07-05 03:20:31   0.0121   0.027
2012-07-05 04:19:56   0.0121   0.028 …
Run Code Online (Sandbox Code Playgroud)

r fill dataframe na

2
推荐指数
1
解决办法
1833
查看次数

标签 统计

r ×3

data.table ×1

dataframe ×1

fill ×1

merge ×1

na ×1