我在R中有一个数据框, struct 如下.我想通过延续最近的非缺失值来填充缺失值,但我想回顾4行,并使用该值来填补空白.我可能对这个问题不太清楚,但您可以在下面的结果示例中查看.

   maker  num
1  local_1  1
2  local_2  2
3  local_3  5
4  local_4  6
5  local_1  NA
6  local_2  NA
7  local_3  NA
8  local_4  NA
9  local_1  4
10 local_2  7
11 local_3  8
12 local_4  9
13 local_1  NA
14 local_2  NA
15 local_3  NA
16 local_4  NA
17 local_1  NA
18 local_2  NA
19 local_3  NA
20 local_4  NA

要转换为:

   maker  num
1  local_1  1
2  local_2  2
3  local_3  5
4  local_4  6
5  local_1  1
6  local_2  2
7  local_3  5
8  local_4  6
9  local_1  4
10 local_2  7
11 local_3  8
12 local_4  9
13 local_1  4
14 local_2  7
15 local_3  8
16 local_4  9
17 local_1  4
18 local_2  7
19 local_3  8
20 local_4  9

NA的数量始终可以被4整除,但没有连续NA数量的模式.

推荐答案

你可以使用for循环,例如

df <- read.table(text = "maker  num
local_1  1
local_2  2
local_3  5
local_4  6
local_1  NA
local_2  NA
local_3  NA
local_4  NA
local_1  4
local_2  7
local_3  8
local_4  9
local_1  NA
local_2  NA
local_3  NA
local_4  NA
local_1  NA
local_2  NA
local_3  NA
local_4  NA", header = TRUE)

for(i in 1:nrow(df)) {
    if (is.na(df$num[i])){
    df$num[i] <- df$num[i - 4]
  }
}
df
#>      maker num
#> 1  local_1   1
#> 2  local_2   2
#> 3  local_3   5
#> 4  local_4   6
#> 5  local_1   1
#> 6  local_2   2
#> 7  local_3   5
#> 8  local_4   6
#> 9  local_1   4
#> 10 local_2   7
#> 11 local_3   8
#> 12 local_4   9
#> 13 local_1   4
#> 14 local_2   7
#> 15 local_3   8
#> 16 local_4   9
#> 17 local_1   4
#> 18 local_2   7
#> 19 local_3   8
#> 20 local_4   9

创建于2024-03-12,版本为reprex v2.1.0

R相关问答推荐

如何删除多个.CSV文件的行

管道末端运行功能

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

在使用ggroove后,将图例合并在gplot中

然后根据不同的列值有条件地执行函数

在R中为马赛克图中的每个字段着色

在ggplot中为不同几何体使用不同的 colored颜色 比例

如何同时从多个列表中获取名字?

将. xlsx内容显示为HTML表

R Select()可以测试不存在的子集列

使用带有OR条件的grepl过滤字符串

用R ggplot2求上、下三角形中两个变量的矩阵热图

按时间顺序对不同事件进行分组

停止ggplot将多行减少到一行

使用未知字符数(不受限制的最大长度)的Lookback有什么好的替代方案?

如何使用字符串从重复的模式中提取多个数字?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

使用R、拼图和可能的网格包绘制两个地块的公共垂直线