具有数字数据框的逻辑数据框,并用 NA 和 R 替换 FALSE
logical dataframe with numerical dataframe and substitute FALSE by NA with R
这可能是一个非常愚蠢的问题,但我绝对是 r 的初学者,我到处查看并尝试了多种方法,但我无法解决问题。
所以我有两个数据帧:df,其中包含数值和 na's and another, j which contains only TRUE, FALSE or na,我想从 df 中恢复对应于 j 的 TRUE 位置的值,FALSE 的值用 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
中的所有 FALSE
条目转换为 NA
s,然后我们将其转换为矩阵以便将其用作 df
内的 row/column 索引。 NA
索引将 return NA
,而 TRUE
将提供正确的索引。虽然输出将是一个向量,因此我们使用 [<-
函数来保留 df
的原始结构
这可能是一个非常愚蠢的问题,但我绝对是 r 的初学者,我到处查看并尝试了多种方法,但我无法解决问题。
所以我有两个数据帧:df,其中包含数值和 na's and another, j which contains only TRUE, FALSE or na,我想从 df 中恢复对应于 j 的 TRUE 位置的值,FALSE 的值用 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
中的所有 FALSE
条目转换为 NA
s,然后我们将其转换为矩阵以便将其用作 df
内的 row/column 索引。 NA
索引将 return NA
,而 TRUE
将提供正确的索引。虽然输出将是一个向量,因此我们使用 [<-
函数来保留 df