Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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替换为NA的FALSE_R_Na - Fatal编程技术网

逻辑数据帧与数字数据帧,并用R替换为NA的FALSE

逻辑数据帧与数字数据帧,并用R替换为NA的FALSE,r,na,R,Na,这可能是一个非常愚蠢的问题,但我是一个绝对的初学者,我到处寻找,尝试了多种方法,但我无法解决这个问题 所以我有两个数据帧:df包含数值和’s,另一个,j只包含真、假或’s,我想从df中恢复对应于j的真位置的值,假的值用NA替换它们的值,NA保持为NA 例如: df 12h 13h 14h 15h 16h 00003 1 NA 10 NA NA 00017

这可能是一个非常愚蠢的问题,但我是一个绝对的初学者,我到处寻找,尝试了多种方法,但我无法解决这个问题

所以我有两个数据帧:df包含数值和’s,另一个,j只包含真、假或’s,我想从df中恢复对应于j的真位置的值,假的值用NA替换它们的值,NA保持为NA

例如:

df
           12h      13h      14h       15h       16h
00003      1        NA       10        NA        NA     
00017      NA       NA       15        18        NA
00018      33       12       25        NA        33
00021      20       12       11        NA        7
00025      NA       21       21        1         9
00031      3        11       NA        NA        3


j
           12h      13h      14h       15h       16h
00003      NA       NA       FALSE     NA        NA     
00017      NA       NA       FALSE     TRUE      NA
00018      FALSE    FALSE    TRUE      NA        NA
00021      TRUE     FALSE    FALSE     NA        TRUE
00025      NA       TRUE     NA        TRUE      FALSE
00031      TRUE     FALSE    NA        NA        TRUE
结果如下:

 df.results
           12h      13h      14h       15h       16h
00003      NA       NA       NA        NA        NA     
00017      NA       NA       NA        18        NA
00018      NA       NA       25        NA        NA
00021      20       NA       NA        NA        7
00025      NA       21       NA        1         NA
00031      3        NA       NA        NA        3
我不知道我是否说得很清楚,但我真的很感激任何帮助。
谢谢

这里有一个可能的解决方案

is.na(j) <- j == FALSE
df[] <- df[as.matrix(j)]
df
#       X12h X13h X14h X15h X16h
# 00003   NA   NA   NA   NA   NA
# 00017   NA   NA   NA   18   NA
# 00018   NA   NA   25   NA   NA
# 00021   20   NA   NA   NA    7
# 00025   NA   21   NA    1   NA
# 00031    3   NA   NA   NA    3
is.na(j)