Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R基于前一行的逐行输入填充_R - Fatal编程技术网

R基于前一行的逐行输入填充

R基于前一行的逐行输入填充,r,R,我有一个R数据框,看起来像这样: Category Date Column Cat1 2018-03-23 19 Cat1 2018-03-24 19 Cat1 2018-03-25 19 Cat1 2018-03-26 NULL Cat1 2018-03-27 NULL ... .... ... Cat2 2018-03-23 25 Cat2 2018-03-24 25 Cat2

我有一个R数据框,看起来像这样:

Category Date        Column
Cat1     2018-03-23  19
Cat1     2018-03-24  19
Cat1     2018-03-25  19
Cat1     2018-03-26  NULL
Cat1     2018-03-27  NULL
...      ....        ...
Cat2     2018-03-23  25
Cat2     2018-03-24  25
Cat2     2018-03-25  25
Cat2     2018-03-26  NULL
Cat2     2018-03-27  NULL
...      ....        ...

并希望用最后一个数字替换空值。因此,对于
Cat1
而言,空值变为19,对于
Cat2
而言,行空值变为25。我怎样才能做到这一点呢?

也许你可以使用
ave

df <- within(df, Column <- ave(Column, Category, FUN = function(x) ifelse(x=="NULL",tail(x[x!="NULL"],1),x)))

# > df
# Category       Date Column
# 1      Cat1 2018-03-23     19
# 2      Cat1 2018-03-24     19
# 3      Cat1 2018-03-25     19
# 4      Cat1 2018-03-26     19
# 5      Cat1 2018-03-27     19
# 6      Cat2 2018-03-23     25
# 7      Cat2 2018-03-24     25
# 8      Cat2 2018-03-25     25
# 9      Cat2 2018-03-26     25
# 10     Cat2 2018-03-27     25

df也许您可以使用
ave

df <- within(df, Column <- ave(Column, Category, FUN = function(x) ifelse(x=="NULL",tail(x[x!="NULL"],1),x)))

# > df
# Category       Date Column
# 1      Cat1 2018-03-23     19
# 2      Cat1 2018-03-24     19
# 3      Cat1 2018-03-25     19
# 4      Cat1 2018-03-26     19
# 5      Cat1 2018-03-27     19
# 6      Cat2 2018-03-23     25
# 7      Cat2 2018-03-24     25
# 8      Cat2 2018-03-25     25
# 9      Cat2 2018-03-26     25
# 10     Cat2 2018-03-27     25
df您的“NULL”显然是一个字符,而不是特殊值,因此您可以将所有“NULL”转换为NAs,然后按照某人的建议使用
tidyr::fill()

df您的“NULL”显然是一个字符,而不是特殊值,因此您可以将所有“NULL”转换为NAs,然后按照某人的建议使用
tidyr::fill()


df将空值转换为
NA
并遵循将空值转换为
NA
并遵循