【问题标题】:Subset values that are not in the other dataset不在其他数据集中的子集值
【发布时间】:2023-03-26 20:26:01
【问题描述】:

我的数据集 1 在每列和数据集 2(相同的维度)中都有一些缺失值,但缺失值已估算。

我想从 dataset2 中对 dataset1 中为 NA 的估算值进行子集化。我的原始数据中没有 NA 标志。

我正在使用 R Studio:

#Example
data.org <- as.data.frame( cbind(WT=c(NA,20,55,NA,25), HT= c(55,NA,NA,25,30), CBC=c(NA,10,20,NA,50) ) )
data.imp <- as.data.frame( cbind(WT=c(10,20,55,25,25), HT= c(55,30,55,25,30), CBC=c(15,10,20,40,50) ) )

#output
data.imp.WT <- as.data.frame(cbind(WT=c(10,25)))
data.imp.HT <- as.data.frame(cbind(HT=c(30,55)))
data.imp.CBC <- as.data.frame(cbind(CBC=c(15,40)))

【问题讨论】:

    标签: r data.table subset


    【解决方案1】:

    以下给出了缺失值:

    data.imp[is.na(data.org)]
    #[1] 10 25 30 55 15 40
    

    要按列获得这些值,我们可以使用 Map

    Map(function(x, y) y[is.na(x)], data.org, data.imp)
    
    #$WT
    #[1] 10 25
    
    #$HT
    #[1] 30 55
    
    #$CBC
    #[1] 15 40
    

    【讨论】:

    • 我需要为每个变量放入一个数据框结构
    • 如果您将上面的输出放在data 中,您可以使用stack(data) 将输出放在一个数据帧中,如果您希望将它们放在单独的数据帧中,则可以使用list2env(data, .GlobalEnv)
    • 我希望它们在一个数据框中。 Stack(data) 适用于这个例子,但是当我将它应用到我正在使用的实际数据上时出现以下错误:in stack.default(Map(function(x, y) y[is.na(x)], data.org, data.imp): non-vector elements will be ignored 并得到 2 个变量的 0 观察
    • 这个Map(function(x, y) y[is.na(x)], data.org, data.imp) 工作正常,但不在堆栈内
    • 知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多