我试图在数据表中添加列,直到相邻列的值为NA。例如,如果我有一张table:
| 日期|1| 2| 3|
| - -----|- -----|- -----|- -----|
| 2019 - 01 - 21 10:00:00| 2|十二岁|十二岁|
| 2019 - 01 - 21 10:00:00| 1| 1|不适用|
| 2019 - 01 - 29 10:00:00| 3|不适用|不适用|
我只加到第1列的第2行,因为第2列的第3行是NA,第2列的第1行是NA。然后我将每一列除以前一列。我也想忽略约会。有没有办法做到这一点,而不需要硬编码?这将是期望的结束行:
| 总计|3|十二岁|十二岁|
| - -----|- -----|- -----|- -----|
我试着使用“adorn_table”并排除NA,但似乎没有做到这一点。
2条答案
按热度按时间hgncfbus1#
对于最初的问题,尝试:
对于澄清的问题,我假设列的数量是任意的。
cigdeys32#
**1)**定义一个函数
sumToNA
,它将x与y中第一个NA之前的位置相加。如果不存在NA,则其和X完全。然后将该函数Map到不带列1的DF和不带前两列但最后一列的DF两次。未使用任何包。
**2)**定义一个函数
NAfwd
,该函数接受一个向量并返回它,但在第一个NA之后包含所有NA,并将所有剩余的非NA转换为0。然后,在用NAfwd
变换每列后,将DF[-1]添加到处理过的DF中,不包括前两列和最后一列两次。然后使用rowSums
对其中的行求和,并将结果作为新行插入。注意事项