在R中输入缺少的字符值

时间:2017-12-07 07:16:08

标签: r

我有一个名为credit_df的数据集,其尺寸为32561 * 15。它有一个native.country列,有1843个缺失值。缺失值以?

给出

我使用以下代码

创建了一个包含国家/地区列表的因子变量
country <- unique(credit_df$native.country)

上面的代码还带有一个?值,因为它是数据集的一部分。所以我已经使用下面的

删除了它
country <- as.data.frame(country)

country %>% filter(country != "?")

现在country因子变量包含数据集中的所有国家/地区名称。现在我想将这些值分配给随机列中的缺失值。我该怎么做 ?

我按照建议的方法尝试了以下代码

 credit_df$native.country[credit_df$native.country %in% c("?")] <-
      sample(country, NROW(credit_df$native.country[credit_df$native.country %in% c("?")]), replace = T)

但所有&#34;?&#34;原来是缺少值

sum(is.na(credit_df$native.country))
[1] 583

注意:即使没有考虑这个例子,如果你们中的任何一个人可以建议如何随机地输入字符值我也没关系。

示例:如果我有一列缺少值的国家/地区。我有一个带有一堆国家/地区名称的矢量/数据框。如何将它们随机分配到国家/地区列中的缺失值

1 个答案:

答案 0 :(得分:0)

您可以尝试使用sample()

credit_df$native.country[credit_df$native.country %in% c("?")] <-
  sample(country, NROW(credit_df$native.country[credit_df$native.country %in% c("?")]), replace = T)

此处的示例命令使用country形式的随机值创建矢量。生成的向量的长度与要替换的行数相同。只有当您想要采样大于总体的样本时才需要replace = T参数(不知道要替换多少行以及country中有多少个值)。