首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过不同的变量为每个观测值连接(合并)数据框

如何通过不同的变量为每个观测值连接(合并)数据框
EN

Stack Overflow用户
提问于 2020-06-25 22:17:48
回答 2查看 33关注 0票数 0

假设我有两个数据帧,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 <- data.frame(
    X = c(1,2,2),
    Y = c("a","b","c"),
    Z = c(10,20,30)
)

df2 <- data.frame(
  X = c(1,2,2,4),
  Y = c(NA,"b","c","d"),
  W = c(-1,-2,-3,-4)
)

我想在df2上同时使用X和Y加入df1。但对于第一个观察,我只使用X。最后,我想得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df3 <- data.frame(
  X = c(1,2,2,4),
  Y = c(NA,"b","c","d"),
  W = c(-1,-2,-3,-4),
  Z = c(10,20,30,NA)
)

无法使用left_join或full_join完成此操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-26 00:51:30

您可以通过两个步骤完成此操作。首先,使用X和Y在df1上使用左连接df2。其次,将Z中缺少的任何值替换为仅基于X的df1中的相应值。但只有在X中没有重复的情况下,这才能起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df4 <- merge(df2, df1, all.x=TRUE); df4
#  X    Y  W  Z
#1 1 <NA> -1 NA # <-- this guy could not match, since Y was NA
#2 2    b -2 20
#3 2    c -3 30
#4 4    d -4 NA

ind <- df4$X[is.na(df4$Z)] # returns the indices 1 4
df4$Z[ind] <- df1$Z[ind]
df4
#  X    Y  W  Z
#1 1 <NA> -1 10
#2 2    b -2 20
#3 2    c -3 30
#4 4    d -4 NA

如果df2$Y对任何复制的X都包含NA,则解是不确定的。

票数 0
EN

Stack Overflow用户

发布于 2020-06-25 22:34:40

看起来不是最优雅的,但我不知道如何做(好)条件连接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
full_join(df2, df1, by = c("X", "Y")) %>%
  filter(!is.na(W)) %>%
  group_by(grp = is.na(Y)) %>%
  do({
    dat <- .
    if (is.na(dat$Y[1])) {
      left_join(dat, select(df1, -Y), by = "X") %>%
        mutate(Z = coalesce(Z.x, Z.y)) %>%
        select(-starts_with("Z."))
    } else dat
  }) %>%
  ungroup() %>%
  select(-grp) %>%
  arrange(X, Y)
# # A tibble: 4 x 4
#       X Y         W     Z
#   <dbl> <chr> <dbl> <dbl>
# 1     1 <NA>     -1    10
# 2     2 b        -2    20
# 3     2 c        -3    30
# 4     4 d        -4    NA
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62585174

复制
相关文章
pandas合并和连接多个数据框
pandas作为数据分析的利器,提供了数据读取,数据清洗,数据整形等一系列功能。当需要对多个数据集合并处理时,我们就需要对多个数据框进行连接操作,在pandas中,提供了以下多种实现方式
生信修炼手册
2020/07/02
1.9K0
一日一技:在 MongoDB 中,如何批量更新不同数据为不同值?
我们知道,当使用 Pymongo 更新MongoDB 字段的时候,我们有两种常见的方法:
青南
2021/06/23
4.8K0
R语言之数据框的合并
要纵向合并两个数据框,可以使用 rbind( )函数。被合并的两个数据框必须拥有相同的变量,这种合并通常用于向数据框中添加观测。例如:
timerring
2023/10/13
9000
R语言之数据框的合并
SAS-如何找出数据集超长变量及观测,并自动进行变量的拆分...
前段时间有人给小编提了一个需求,找出数据集中长度超过200字节的变量,并对变量进行拆分...这个需求当然不难,但是还是分享给大家~主要最近没写啥程序,也就没学到啥新的技能...关于变量长度的拆分,我想也是一个常见的问题。
Setup
2019/10/20
3.7K0
如何获取变量token的值
1.客户端使用用户名跟密码请求登录 2.服务端收到请求,去验证用户名与密码 3.验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 4.客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 LocalStorage 里,客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 5.服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 6.web/APP登录的时候发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果成功,以某种方式比如随机生成32位的字符串作为token,存储到服务器中,并返回 token 到web/APP,以后web/APP请求时凡是需要验证的地方都要带上该 token,然后服务器端验证 token,成功返回所需要的结果,失败返回错误信息,让他重新登录。其中服务器上 token 设置一个有效期,每次web/APP请求的时候都验证token 和有效期。 二、如何获取token的值,进行接口测试
用户7880705
2020/10/29
14.5K0
Pandas DataFrame 数据合并、连接
merge 通过键拼接列 pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下:
马哥Python
2019/06/27
3.4K0
R Tricks: 如何巧为观测标记序号
本期大猫课堂将会开始一个新的系列:你不知道的R Tricks。这个系列将搬运stackoverflow.com(以后简称SO)上关于R数据处理的一些经典问答。大猫除了翻译原文,还会从初学者的角度为代码补充详细的解释。其实这些问题基本上都是大猫自己在数据处理过程中实际遇到的,看了SO上的答案不禁拍案叫绝,忍不住和大家分享。
用户7652506
2020/10/23
1K0
R Tricks: 如何巧为观测标记序号
YbtOJ 755「分治」变量观测
n,m \le 2\times10^5,1\le k\le3,1\le t,v\le10^6。
yzxoi
2022/09/19
3410
R数据科学|第九章内容介绍
在实际应用中,我们常会涉及到多个数据表,必须综合使用它们才能找到关键信息。存在于多个表中的这种数据统称为关系数据。本章中的很多概念都和SQL中的相似,只是在dplyr中的表达形式略微不同。一般来说,dplyr 要比 SQL 更容易使用。
庄闪闪
2021/04/09
1.6K0
3 - 各种变量与值之间的多种连接方式
字符串与字符串之间连接 # 字符串与字符串之间连接的方式有5 种 ## 1:+(加号) s1 = 'hello' s2 = 'world' s = s1 + s2 print(s) helloworld helloworld 用逗号连接: hello world 格式化: <hello> <world> join连接: hello world ## 2: 直接连接 s = 'hello''world' print(s) helloworld ## 3: 用逗号(,)连接,标准输出的重定向 from io i
ruochen
2021/05/22
7320
3 - 各种变量与值之间的多种连接方式
Python合并数据、多表连接查询
我们可以通过DataFrame或Series类型的concat方法,来进行连接操作,连接时,会根据索引进行对齐。
天道Vax的时间宝藏
2021/08/11
1.9K0
js通过input框输入属性和值,改变div的属性
js实现在input框里面输入属性和值,页面的 div的属性根据输入的属性和值进行变化。
王小婷
2019/03/04
15.8K0
js通过input框输入属性和值,改变div的属性
关于获取EditText编辑框中的值为空的问题
类似于这种注册页面的程序 protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.regis_ui);  EditText tv =  (EditText) findViewById(R.id.na);             name = tv.getText().toString(
geekfly
2022/05/06
3K0
SpringMvc通过@Value( ) 给静态变量注入值
spring 不允许/不支持把值注入到静态变量中,如: @Value("${ES.CLUSTER_NAME}") private static String CLUSTER_NAME; 在方法中获得的CLUSTER_NAME,会得到null 解决 好在spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量。如: private static String CLUSTER_NAME; @Value("${ES.CLUSTER_NAME}") public void setCl
欢醉
2018/03/28
8090
如何通过Tableau连接Kerberos的Hive/Impala
昨天Fayson写了一篇《如何安装Tableau并连接CDH的Hive/Impala》,后台关注人数当天增加了40人,有点大大超过Fayson的预期,首先还是谢谢各位关注Fayson的人。
Fayson
2018/03/29
6.4K0
如何通过Tableau连接Kerberos的Hive/Impala
如何通过Binlog来实现不同系统间数据同步
互联网时代除了业务迭代速度快,还有就是数据增速也比较快。单应用、单实例、单数据库的时代早已不复返。现在,作为技术研发,如果参与的项目没有用到分库分表,都不好意说自己做过大项目。
微观技术
2020/08/20
1.4K0
Power Query对不同标题数据进行合并的技巧
需要进行表格的合并,通常来说需要把标题给统一,这样直接通过Table.Combine函数即可进行表格数据的合并。
逍遥之
2020/07/07
10.6K2
Power Query对不同标题数据进行合并的技巧
数据框取子集、修改和连接的方法
title: "数据框取子集、修改和连接的方法" output: html_document date: "2023-03-18" 先生成一个数据框df1作为示例数据框 df1 <- data.frame(gene = paste0("gene",1:4), change = rep(c("up","down"),each = 2), score = c(5,3,-2,-4)) df1 ## gene change scor
小叮当aka
2023/03/18
1.7K0
点击加载更多

相似问题

合并数据框以消除丢失的观测值

30

将数据框与年度观测值和时段观测值合并:如何复制时段观测值以使其成为年度观测值

111

数据框中未连接的单独观测值

15

合并具有不同观测值的两个数据集

10

合并每个数据框中值略有不同的列上的数据框

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

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