首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何像字典一样添加键值对?

如何像字典一样添加键值对?
EN

Stack Overflow用户
提问于 2017-09-03 01:47:02
回答 3查看 893关注 0票数 1

我的数据(总共8532个)如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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_idweight,其中有些Prd_id没有提到weight --例如,我在数据中显示,第二和第三没有,所以我知道weight的值,我只需要用它替换NA,所有相同的Prd_id都会有相同的weight,但是在R中没有像字典这样的东西,所以我发现很难解决这个问题。我试过使用for loop,但是需要很长时间,我的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个),spl (1555个)是bms的一个子集,其值为Prd_Id

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-03 03:04:10

正如@r2evans所建议的那样,您可以使用类似SQL的连接策略,再加上dplyr的coalesce,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)

# create 'bms'.
bms <- data_frame(
  Prd_Id = c("DRA24", "DRA24", "DRA24", "DRA24", "DRA24", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59"),
  Weight = c(19.35, NA, NA, 19.35, 19.35, 8.27, 8.27, 8.27, 8.27, NA, NA)
)

# create 'spl'
spl <- bms %>% filter(!is.na(Weight)) %>% filter(!duplicated(Prd_Id))

# SQL-like join and coalesce strategy
res <- bms %>% 
  left_join(spl, by = "Prd_Id", suffix = c("_bms", "_spl")) %>% 
  mutate(Weight = coalesce(Weight_bms, Weight_spl)) %>%
  select(-Weight_bms, -Weight_spl)
票数 1
EN

Stack Overflow用户

发布于 2017-09-04 03:11:10

不需要left_join

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bms %>% 
  group_by(Prd_Id) %>% 
  mutate(Weight = Weight[!is.na(Weight)][1])

另一种使用first的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bms %>% 
  group_by(Prd_Id) %>% 
  mutate(Weight = first(Weight[!is.na(Weight)]))

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# A tibble: 11 x 2
# Groups:   Prd_Id [2]
   Prd_Id Weight
    <chr>  <dbl>
 1  DRA24  19.35
 2  DRA24  19.35
 3  DRA24  19.35
 4  DRA24  19.35
 5  DRA24  19.35
 6  DRA59   8.27
 7  DRA59   8.27
 8  DRA59   8.27
 9  DRA59   8.27
10  DRA59   8.27
11  DRA59   8.27

当然,你也可以在香草R中这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
transform(bms, Weight = ave(Weight, Prd_Id, FUN = function(x) x[!is.na(x)][1]))

结果是相同的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Prd_Id Weight
1   DRA24  19.35
2   DRA24  19.35
3   DRA24  19.35
4   DRA24  19.35
5   DRA24  19.35
6   DRA59   8.27
7   DRA59   8.27
8   DRA59   8.27
9   DRA59   8.27
10  DRA59   8.27
11  DRA59   8.27
票数 1
EN

Stack Overflow用户

发布于 2017-09-04 03:07:14

这里有一个基本的R解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# example data
bms <- data.frame(
  Prd_Id = c("DRA24", "DRA24", "DRA24", "DRA24", "DRA24", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59"),
  Weight = c(19.35, NA, NA, 19.35, 19.35, 8.27, 8.27, 8.27, 8.27, NA, NA)
)

# create key-value pairs
spl <- unique(bms[!is.na(bms[,"Weight"]),])
spl <- setNames(spl[,"Weight"], spl[,"Prd_Id"])

# fill NAs
idx <- which(is.na(bms[,"Weight"]))
bms[idx,"Weight"] <- spl[bms[idx, "Prd_Id"]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46022154

复制
相关文章
thymeleaf中${}和 #{} 和 *{}的作用和意义
1.$符号取上下文中的变量: <input type="text" name="userName" th:value="${user.name}"> 2.#符号取thymeleaf工具中的方法、文字消息表达式: <p th:utext="#{home.welcome}">Welcome to our grocery store!</p> 3. *{...}选择表达式一般跟在th:object后,直接选择object中的属性 <div th:object="${session.user}"> <
知识浅谈
2020/11/03
3.6K0
url中的 #、?的作用和意义
https://blog.csdn.net/weixin_43582101/article/details/90416944
李玺
2021/11/22
5.5K0
url中的 #、?的作用和意义
NumPy和Pandas中的广播
广播(Broadcast)是 numpy 对不同维度(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
deephub
2022/11/11
1.2K0
NumPy和Pandas中的广播
Python中的浮点数和小数
float类型,即浮点数,是Python内置的对象类型;decimal类型,即小数类型,则是Python的标准库之一decimal提供的对象类型,也是内置的。了解decimal类型的最佳资料,就是它的官方文档:https://docs.python.org/3/library/decimal.html。
老齐
2021/01/21
1.8K0
Pandas 和 Numpy 中的统计
np.max() / np.min() / np.ptp():返回一个数组中最大值/最小值/极差(最大值减最小值)
杨丝儿
2022/02/18
2.8K0
numpy和pandas中的axis
在numpy和pandas中经常出现axis轴这个概念,下面就详细的看看这个轴到底是什么意思 使用0值表示沿着每一列或行标签\索引值向下执行方法 使用1值表示沿着每一行或者列标签模向执行对应的方
听城
2018/04/27
1.1K0
numpy和pandas中的axis
详解 Numpy 中的视图和副本
在编程的过程中很可能会使用到原数组,这就涉及到视图和副本的概念,简单来说视图与副本是使用原数组的两种不同的方式。
触摸壹缕阳光
2020/08/25
1.1K0
详解 Numpy 中的视图和副本
Numpy中的数学和统计方法
下面的所有统计方法,即可以当做数组的实例方法调用,也可以当做Numpy函数来调用。
触摸壹缕阳光
2020/07/02
8590
访问和提取DataFrame中的元素
访问元素和提取子集是数据框的基本操作,在pandas中,提供了多种方式。对于一个数据框而言,既有从0开始的整数下标索引,也有行列的标签索引
生信修炼手册
2020/06/24
4.4K0
python中numpy.array_对numpy中array和asarray的区别详解
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。
用户7886150
2021/01/02
6410
Postgresql中精确浮点类型decimal和不精确浮点类型real(案例)
Postgresql提供四类浮点型,其中两类完全相同decimal、numeric;按功能看可以分成两类:
mingjie
2022/11/30
2.6K0
Postgresql中精确浮点类型decimal和不精确浮点类型real(案例)
【numpy】新版本中numpy(numpy>1.17.0)中的random模块
numpy是Python中经常要使用的一个库,而其中的random模块经常用来生成一些数组,本文接下来将介绍numpy中random模块的一些使用方法。
西西嘛呦
2020/08/26
1.6K0
【numpy】新版本中numpy(numpy>1.17.0)中的random模块
【numpy】numpy中的常用函数
1、numpy.mean(a, axis, dtype, out,keepdims )
西西嘛呦
2020/08/26
9120
【numpy】numpy中的常用函数
PostgreSQL中NULL的意义
PG中,NULL可以表示空numeric值;不能进行数学操作符计算,NULL参与的结果都是NULL。
yzsDBA
2022/12/27
2.2K0
numpy数组中冒号和负号的含义
numpy数组中":"和"-"的意义 在实际使用numpy时,我们常常会使用numpy数组的-1维度和":"用以调用numpy数组中的元素。也经常因为数组的维度而感到困惑。 总体来说,":"用以表示当前维度的所有子模块 "-1"用以表示当前维度所有子模块最后一个,"负号用以表示从后往前数的元素,-n即是表示从后往前数的第n个元素"#分片功能 a[1: ] 表示该列表中的第1个元素到最后一个元素,而,a[ : n]表示从第0个元素到第n个元素(不包括n) import numpy as np POP_SI
演化计算与人工智能
2020/08/14
2.2K0
Kubernetes中的nodePort,targetPort,port的区别和意义
1. nodePort 外部机器可访问的端口。 比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问scheme://node:30001访问到该服务,例如http://node:30001。 例如MySQL数据库可能不需要被外界访问,只需被内部服务访问,那么不必设置NodePort 2. targetPort 容器的端口(最根本的端口入口),与制作容器时暴露的端口一致(DockerFile中EXPOSE),例如
院长技术
2021/02/19
2K0
Kubernetes中的nodePort,targetPort,port的区别和意义
numpy中mgrid()和meshgrid()函数
meshgrid函数通常使用在数据的矢量化上。它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。示例展示:
狼啸风云
2019/11/27
3K0
前端页面中的<meta name="renderer" content="webkit">意义
由于众所周知的原因,国内的主流浏览器都是双核浏览器:基于Webkit的内核用于常用网站的高速浏览,基于IE的内核主要用于部分网银、政府、办公系统等网站的正常使用。以360浏览器为例,优先通过Webkit内核渲染主流网站,只有少量的网站通过IE内核渲染,以保证页面兼容性。
浩Coding
2019/07/03
11.2K0
java中final的意义
转载自 https://blog.csdn.net/hikvision_java_gyh/article/details/8964541
allsmallpig
2021/02/25
2940
点击加载更多

相似问题

用分离意义和指数逼近log2(浮点)

10

Numpy矩阵模指数提取

13

浮点数的意义和指数是如何在内部表示的?

23

不相交指数的NumPy和

25

实数的最小和最大浮点指数

21
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文