【发布时间】:2019-10-14 02:51:00
【问题描述】:
我正在尝试使用以下代码结转非 na 值,直到到达下一个非 na:
test3 <- data.table(final_data)
test3 <- test3[, na.locf(test3, na.rm = F, fromLast = F, maxgap = Inf), by = "gvkey"]
当我不包含 ... by = gvkey] 部分时,它可以工作。 但是,我需要在到达新的 gvkey 时停止代码,否则它将携带错误的公司数据。我得到了长格式(下面的例子)。如您所见,如果我不使用 ...by = gvkey] 会发生什么,它将 gvkey1 的值传递给 gvkey2,这是我想避免的。但是这样做时,我收到以下错误消息:
Error in `[.data.table`(test3, , na.locf(test3, na.rm = F, fromLast = F, : negative length vectors are not allowed
<table><tbody><tr><th>date</th><th>gvkey</th><th>dlcq</th><th>dlttq</th></tr><tr><td>date1</td><td>gvkey1</td><td>10</td><td>20</td></tr><tr><td>date2</td><td>gvkey1</td><td>NA</td><td>NA</td></tr><tr><td>date3</td><td>gvkey1</td><td>NA</td><td>10</td></tr><tr><td>.</td><td> </td><td> </td><td> </td></tr><tr><td>.</td><td> </td><td> </td><td> </td></tr><tr><td>.</td><td> </td><td> </td><td> </td></tr><tr><td>date10</td><td>gvkey2</td><td>NA</td><td>NA</td></tr><tr><td>date11</td><td>gvkey2</td><td>10</td><td>NA</td></tr><tr><td>date12</td><td>gvkey2</td><td>NA</td><td>NA</td></tr></tbody></table>
非常欢迎任何建议/解决方案!
【问题讨论】:
标签: r