我的数据包含“username”行,然后是2016-09-06至2017-09-30每天的列,其中每一天都是一列。
在观察发生的日子里,每个用户都有值L,T和C.对于没有观察的日期,我有NA。
我想用L替换NA,但仅在用户进行第一次观察后才用。所以:
NA NA NA NA L NA NA L T C. 会成为 NA NA NA NA L L L L TC
我的数据中有一小部分,但不知道如何将其插入到问题中。如果需要,请告诉我如何提供这个。
提前致谢。
答案 0 :(得分:1)
na.locf0(x)
会将NA
值填入x
中最后一个值,同时保留前导NA
值,使其输出长度与其相同输入;因此,如果na.locf(x)
中的某个位置不是NA
,但NA
中x
的相同位置是na.locf0
,则x
会将其填入。这些位置具有值在下面的代码中显示的逻辑表达式中为TRUE,因此将"L"
的值设置为replace
。我们使用x
非破坏性地执行此操作(即我们输出所需的向量而不修改library(zoo)
x <- c(NA, NA, NA, NA, "L", NA, NA, "L", "T", "C") # test data
replace(x, !is.na(na.locf0(x)) & is.na(x), "L")
## [1] NA NA NA NA "L" "L" "L" "L" "T" "C"
本身)。
L
如果我们知道要填写的所有NA都遵循na.locf0(x)
(如问题中的示例数据)那么
replace
就足够了;但是,如果一般情况与问题中所述相同,则需要上面的NA
代码。
上述内容的一种变体是用"L"
替换所有NA
值,然后用na.locf0(x)
替换NA
中replace(replace(x, is.na(x), "L"), is.na(na.locf0(x)), NA)
## [1] NA NA NA NA "L" "L" "L" "L" "T" "C"
的位置
% Example Data
superset = {
[0.983 0.711 0.000];
[1.000 0.020 0.668];
[0.237 1.000 1.000];
[0.245 0.707 0.544];
[0.000 0.000 0.000]
};
% Example Condition: RGB is Pure Black
subset_idx = cell2mat(cellfun(@(x) all(x == 0),superset,'UniformOutput',false));
% Subset Extraction
subset = superset(subset_idx);
答案 1 :(得分:1)
我们可以做到
library(zoo)
na.locf(vec, na.rm = FALSE)
#[1] NA NA NA NA "L" "L" "L" "L" "T" "C"
vec <- c(NA, NA, NA, NA, 'L', NA, NA, 'L', 'T', 'C')