【问题标题】:Replacing missing values of a column vector替换列向量的缺失值
【发布时间】:2016-09-27 16:05:52
【问题描述】:

在数据帧中,我有两个分类变量,例如数据帧dfqsvr。这个数据框非常大,但假设 qs 中有 100 个不同的级别,不需要遵循模式。列向量vr——正如我所说的也是一个分类变量——有一些缺失值。

我要做的是根据qs中的相应类别或值标记vr中存在的缺失值。

我知道 先验,这是 qs 中的 9 个不同类别,vr 有缺失值。假设qs 中的一个类别的标签是102,而qs 中的这一类别的标签vr 中存在缺失值。

那么,我想做的是

  • 如果qs==102中的类别/标签/值设置vr==Greece
  • 如果qs==250中的类别/标签/值设置vr==Italy

以此类推。

遗憾的是,我的数据框非常复杂,我不知道如何重现简单的数据框。

【问题讨论】:

  • 对于 'qs' 3,'vr' 完全不适用。我想这是一个简单的例子来展示一个复杂的问题。但是,如果'vr'中的所有元素都是NA,你如何用'c'替换它(这里很明显字母遵循字母模式)

标签: r lookup missing-data categorical-data data-cleaning


【解决方案1】:

假设 'vr' 中有一个 'c' 对应 'qs' 的值为 3,我们可以使用data.table

library(data.table)
setDT(df)[, vr := na.omit(vr)[1] , by = qs]

尚不清楚 OP 是否想用每个“qs”的“vr”的唯一元素或其他一些值替换缺失值。如果要替换成其他一些值,创建一个key/value数据集,加入原始数据集on'qs'

df1 <- data.table(qs = 1:4, vr = c("Serbia", "England", "Greece", "USA"))
df$qs <- as.numeric(as.character(df$qs))
setDT(df)[df1, on = "qs"][is.na(vr), vr := i.vr][, i.vr := NULL][]

【讨论】:

  • 示例中的字母仅用于说明目的,我需要将vr 中的缺失值替换为我想要的名称。例如,如果qs==1 设置“塞尔维亚缺失值”。
  • @msh855 我在您的问题下方发表了评论。在你的问题中,'vr' 3 中的 'qs' 元素都缺失了。那么,有人怎么知道它应该被替换为 'c'?
  • 这不是问题,因为我知道应该更换什么。因此,例如,对于3,我想设置Greece。对我来说真正的困难是我知道vr 中缺少值,但我不知道“qs”中的哪些类别。查找qs 中的哪个类别在vr 中存在缺失值对我来说是最难的,替换它相对容易,因为如果我在qs 中找到该类别,我知道在vr 中应该给出什么名称
  • @msh855 我认为您的示例和您的要求不匹配。请用你想要的更新你的例子。
  • 你能再看看我更新的帖子吗?也许现在更清楚了。
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 2020-01-04
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
相关资源
最近更新 更多