我尝试粘贴文本到填充空变量上直到另一个文本出现。我想对特定行执行此操作
当前表:
| 变量1|变量2|变量3|变量3|变量4|
| - ------|- ------|- ------|- ------|- ------|
| A类|文本A||文本B||
| B|1个|第二章|三个|四个|
| (c)秘书长的报告|三个|四个|五个|六个|
预期输出:
| 变量1|变量2|变量3|变量3|变量4|
| - ------|- ------|- ------|- ------|- ------|
| A类|文本A|文本A|文本B|文本B|
| B|1个|第二章|三个|四个|
| (c)秘书长的报告|三个|四个|五个|六个|
什么是优雅的方法来做到这一点?我目前的解决方案看起来像这样,但我想使用一个逻辑,而不是像下面这样指定变量名:
mutate(var3=case_when(var1=="A" & is.na(var3) ~ var2))
2条答案
按热度按时间dy2hfwbg1#
我们可以提取其中"var1"是"A"的行
unlist
,并从zoo
应用na.locf0
,以用先前的非NA值替换NA值或者使用
base R
,基于非NA元素(cumsum
)创建一个数字索引,并使用该索引从提取的行中复制非NA值或者使用
tidyverse
,将其重新调整为"长"格式(pivot_longer
),应用fill
将NA替换为之前的非NA,然后使用pivot_wider
重新调整为宽格式如果只有备用NA,则还将提供一个选项
数据
px9o7tmv2#
以下是一个选项,但仅适用于少数列: