【发布时间】:2017-09-03 09:47:02
【问题描述】:
我的数据(总共 8532 obs)如下所示:
Prd_Id Weight
DRA24 19.35
DRA24 NA
DRA24 NA
DRA24 19.35
DRA24 19.35
DRA59 8.27
DRA59 8.27
DRA59 8.27
DRA59 8.27
DRA59 NA
DRA59 NA
基本上问题是有很多对Prd_id和weight,其中一些Prd_id没有提到weight,例如我在数据中显示的第一个只有第二个和第三个不是,所以我知道weight 的值,我只需要用它替换 NA,所有相同的Prd_id 将具有相同的weight 但在 R 中没有像字典这样的东西,所以我觉得很难来解决这个问题。我尝试使用for loop,但这需要很长时间,我的代码如下所示:
for(i in 1:nrow(bms)){
for(j in 1:1555){
if(spl$Prd_Id[j]==bms$Prd_Id[i]){
bms$weight[i]=spl$weight[j]
}
}
}
bms 是整个 data (8532 obs),spl (1555 obs) 是 bms 的子集,唯一值为 Prd_Id。
【问题讨论】:
-
目前尚不清楚为什么字典是缺失值的首选解决方案。您可以简单地删除 (
complete.cases) 或估算它们(有几个软件包提供)。如果您需要从data.frame进行查找(如您在此处所示),您可以使用“连接”运算符之一(无论是基本 R 中的merge、dplyr::*_join函数之一,还是等效的在data.table)。如果spl只是bms的一个样本,但它有缺失值(存在于bms中),那么你的问题不是字典,你的问题是你的抽样技术。跨度> -
实际上有很多对 Prd_id 和重量,其中一些 Prd_id 没有提到重量,例如我在数据中显示的第一个有但第二个和第三个没有所以我知道权重的值,我只需要用它替换 NA,所有相同的 Prd_id 将具有相同的权重,这就是为什么我正在考虑创建一个字典,它将键作为 Prd_id,值作为权重。其次,spl 没有缺失值,它具有 Prd_id 的所有唯一值和相应的权重
标签: r list for-loop missing-data