逻辑数据帧与数字数据帧,并用R替换为NA的FALSE
这可能是一个非常愚蠢的问题,但我是一个绝对的初学者,我到处寻找,尝试了多种方法,但我无法解决这个问题 所以我有两个数据帧:df包含数值和’s,另一个,j只包含真、假或’s,我想从df中恢复对应于j的真位置的值,假的值用NA替换它们的值,NA保持为NA 例如:逻辑数据帧与数字数据帧,并用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
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)