【发布时间】:2020-09-20 23:46:03
【问题描述】:
我有一个数据框,其中包含一系列值,其中一些是 NA - 我想随机抽取一个不是 NA 的值
以下示例:
df1
col1 col2 col3
1 4 NA
2 NA 1
NA 4 7
我想要一个向量,它是从每一行中选择一个非 NA 值的结果。
【问题讨论】:
我有一个数据框,其中包含一系列值,其中一些是 NA - 我想随机抽取一个不是 NA 的值
以下示例:
df1
col1 col2 col3
1 4 NA
2 NA 1
NA 4 7
我想要一个向量,它是从每一行中选择一个非 NA 值的结果。
【问题讨论】:
您可以使用apply 并从每一行中随机选择一个非NA 值。
apply(df1, 1, function(x) sample(na.omit(x), 1))
#[1] 1 2 4
【讨论】:
map_dbl 按列工作,每列返回 1 个随机值。我们可以使用pmap_dbl 进行逐行操作。 purrr::pmap_dbl(df1, ~sample(na.omit(c(...)), 1))
我们可以使用c_across 和rowwise 来自tidyverse
library(dplyr)
df1 %>%
rowwise %>%
mutate(Sampled = sample(na.omit(c_across(everything())), 1))
# A tibble: 3 x 4
# Rowwise:
# col1 col2 col3 Sampled
# <int> <int> <int> <int>
#1 1 4 NA 1
#2 2 NA 1 2
#3 NA 4 7 7
【讨论】: