说我有这两个数据框:
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创建为所有日志行号的序列,并将小表合并到它.然后我可以"填写"进程名称并将大表合并到日志文件中,只保留日志文件中包含的所有内容.
我对其他方法持开放态度.
假设我有这样的数据:
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)
我应该在这里使用的秘密前缀或后缀是什么?
我正在尝试使用最近的前一列数据回填一个完全外连接的表.
我看起来像数据框..(没有行的两边都是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)
对此,我期待..
结果,我想让桌子看起来像......
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)