如何基于第三列的共享ID从一个数据帧中获取数据并将其复制到另一数据帧中的现有列中

莎拉·海斯(Sarah Hays)

因此,我有两个不同的数据帧:我一直在研究的数据帧(df1)和我需要放入第一个数据帧的所有新数据(df2)。Df1有几列零,等待添加数据。Df2有我需要的数据,还有一些我不在乎这些数据的行和列。这是我正在处理的数据类型的一小部分。

这是我第一次发布数据,希望我做得对。让我知道您是否需要其他格式。

df1:

structure(list(season = c(" FA15", " FA15", " FA15", " FA15", 
" FA15", " FA15", " FA15", " FA15", " FA15", " FA15"), year = c("2015", 
"2015", "2015", "2015", "2015", "2015", "2015", "2015", "2015", 
"2015"), territory.name = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), plot = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), color.band = c("APGBY", 
"APGGU", "APGPW", "APGPW", "APGR", "APGUO", "APGUO", "APGUO", 
"APGUO", "APGYR")), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))

df2:

structure(list(bandnum = c(157328052, 160379101, 157328094, 151313455, 
170364680, 160379104, 151373458, 157328066, 160379103, 160379105
), project = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L), .Label = c("*ISSJ", "ISSJ"), class = "factor"), color.band = c("PAWR", 
"WYWAR", "APGP", "APGO", "ABYG", "URYAR", "APBW", "WABG", "OBWAR", 
"GBGAR"), sex = structure(c(3L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 
2L), .Label = c("?", "F", "M"), class = "factor"), age = structure(c(2L, 
1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L), .Label = c("AHY", "ASY", 
"HY", "N", "SY"), class = "factor")), row.names = c(NA, 10L), class = "data.frame")

我花了几天的时间思考这个问题,尝试不同的方法并在堆栈溢出时读取了很多答案,但是我未能就如何从一个数据帧中获取数据并将其复制到现有数据中给出明确的答案基于第三列的共享ID的另一个数据框中的列。

几乎,我希望r看到color.band列中的两个数据帧都有波段ABCDEF的列表,然后从与ABCDEF相同的行中的df2 $ bandnum中取值,并将其复制到df1 $ bandnum中。 ABCDEF行在那里。

我不想将df2中的行而不是df1复制到df1中。我想在bandnum列中将df1中存在但不df2中存在的条目标记为N / A。

色带和色带号的列名和数据格式已在两个数据框之间进行了标准化,因此所有内容都应对齐。到目前为止,我对代码的了解是:

> practicedf <- left_join(x=df1, y=df2, by = "color.band", all.x = TRUE) 
%>% mutate(y = ifelse(is.na(df1$color.band), df1$bandnum, df1$color.band)) %>% select(df2$bandnum)

left_join似乎是正确的,因为它将所有行保留在左侧(df1)数据帧中,并且仅匹配右侧(df2)数据帧中的行。我收到此错误:

Error in `[[<-.data.frame`(`*tmp*`, col, value = c("APGBY", "APGGU", "APGPW", : 
replacement has 1261 rows, data has 2559

color.band是一个字符向量,而bandnum是数字,这是一个问题吗?这可能是什么问题?


编辑:我在两个数据帧中都有列bandnum时出错,所以我将df2 $ bandnum更改为bandnum.y。我的代码是现在

df1_test <- left_join(x=df1, y=df2, by = "color.band") %>% mutate(y =
 ifelse(is.na(color.band), bandnum, color.band)) %>% select(bandnum.y) 

但是当我查看(df1_test)时,它仅显示bandnum.y列,并且条目数与原始df1不同

这是df1_test的子集(不是全部,因为它是2600个条目)

有什么办法可以使它同时显示其余数据吗?

structure(list(bandnum.y = c("171324972", "171324972", "171324972", 
"178324697", "178324697", "178324697", "178324697", "178324697", 
"178324697", "178324697", "170364505", "170364505", "170364505", 
"170364505", "170364505", "170364505", NA, "178324692", "178324692", 
"178324692")), row.names = c(NA, -20L), class = c("tbl_df", "tbl", 
"data.frame"))
阿克伦

加入后,我们无法使用原始数据集'df1'列,因为它是个left_join在中tidyverse,我们指定未加引号的列名称。中没有all.x论点left_join应该是merge

library(dplyr)
left_join(x=df1, y=df2, by = "color.band") %>% 
     mutate(y = ifelse(is.na(color.band), bandnum, color.band)) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于两列组合的匹配,将列从一个数据帧复制到另一数据帧

来自分类Dev

如何将单元格值从一个数据帧复制到另一数据帧(不匹配的数据帧长度)

来自分类Dev

如果特定列的值在两个数据帧中都匹配,则将一个数据帧的行复制到另一数据帧

来自分类Dev

将值从一个数据帧列传递到Pandas中的另一数据帧

来自分类Dev

如何基于R中的另一个数据帧重命名数据帧的所有列?

来自分类Dev

如何基于R中的另一个数据帧重命名数据帧的所有列?

来自分类Dev

一个数据框中的列总和基于另一数据帧的行值

来自分类Dev

将列数据从一个数据帧转置到另一数据帧

来自分类Dev

根据条件将列的子集复制到R中的另一个数据帧

来自分类Dev

基于 Python 中另一个数据帧的行值从数据帧中获取列?

来自分类Dev

使用setDT将一个数据帧中的许多列合并到另一数据帧中

来自分类Dev

如何基于另一个数据帧的索引在一个数据帧中创建“ ID”列?

来自分类Dev

如何在第一个数据帧中的另一个基于数据帧的列值中获取值的总和?

来自分类Dev

根据条件查找一个数据帧中的列等于另一数据帧的情况

来自分类Dev

如何将一个数据帧中某些列的值与另一数据帧中同一列集的值进行比较?

来自分类Dev

根据Pandas中的ID将列值从一个数据框复制到另一个数据框

来自分类Dev

使用PySpark数据帧时,根据索引从一个数组中定位值,然后复制到另一个数组中

来自分类Dev

基于R中另一个数据帧中的列填充数据帧中的列

来自分类Dev

将一个数据帧中的id字符替换为另一数据帧中的id字符

来自分类Dev

选择范围内的数据帧的列值并将其放入熊猫中另一个数据帧的适当列中

来自分类Dev

如何基于另一个数据帧中的时间间隔在一个数据帧中添加新列

来自分类Dev

使用一个数据帧列的元素选择另一个数据帧中的值以使用 Tidyverse 创建第三个数据帧

来自分类Dev

如何仅将数据从一个数据库表中的数据复制到sql server中的另一个数据库现有表

来自分类Dev

如何从 PySpark 中另一个数据帧的列中创建数据帧中的列

来自分类Dev

基于一个数据帧中的multiindex和另一个数据帧中的列,从两个数据帧中创建两个数据帧

来自分类Dev

如何基于向量隔离数据帧中的值,然后使用R将其乘以同一数据帧中的另一列?

来自分类Dev

将数据从一个数据帧复制到另一个数据帧,然后根据值替换数据

来自分类Dev

基于部分字符串匹配,从另一数据帧填充一个数据帧列

来自分类Dev

根据另一个数据帧的“时间戳”和“id”从一个数据帧中获取最大数量

Related 相关文章

  1. 1

    基于两列组合的匹配,将列从一个数据帧复制到另一数据帧

  2. 2

    如何将单元格值从一个数据帧复制到另一数据帧(不匹配的数据帧长度)

  3. 3

    如果特定列的值在两个数据帧中都匹配,则将一个数据帧的行复制到另一数据帧

  4. 4

    将值从一个数据帧列传递到Pandas中的另一数据帧

  5. 5

    如何基于R中的另一个数据帧重命名数据帧的所有列?

  6. 6

    如何基于R中的另一个数据帧重命名数据帧的所有列?

  7. 7

    一个数据框中的列总和基于另一数据帧的行值

  8. 8

    将列数据从一个数据帧转置到另一数据帧

  9. 9

    根据条件将列的子集复制到R中的另一个数据帧

  10. 10

    基于 Python 中另一个数据帧的行值从数据帧中获取列?

  11. 11

    使用setDT将一个数据帧中的许多列合并到另一数据帧中

  12. 12

    如何基于另一个数据帧的索引在一个数据帧中创建“ ID”列?

  13. 13

    如何在第一个数据帧中的另一个基于数据帧的列值中获取值的总和?

  14. 14

    根据条件查找一个数据帧中的列等于另一数据帧的情况

  15. 15

    如何将一个数据帧中某些列的值与另一数据帧中同一列集的值进行比较?

  16. 16

    根据Pandas中的ID将列值从一个数据框复制到另一个数据框

  17. 17

    使用PySpark数据帧时,根据索引从一个数组中定位值,然后复制到另一个数组中

  18. 18

    基于R中另一个数据帧中的列填充数据帧中的列

  19. 19

    将一个数据帧中的id字符替换为另一数据帧中的id字符

  20. 20

    选择范围内的数据帧的列值并将其放入熊猫中另一个数据帧的适当列中

  21. 21

    如何基于另一个数据帧中的时间间隔在一个数据帧中添加新列

  22. 22

    使用一个数据帧列的元素选择另一个数据帧中的值以使用 Tidyverse 创建第三个数据帧

  23. 23

    如何仅将数据从一个数据库表中的数据复制到sql server中的另一个数据库现有表

  24. 24

    如何从 PySpark 中另一个数据帧的列中创建数据帧中的列

  25. 25

    基于一个数据帧中的multiindex和另一个数据帧中的列,从两个数据帧中创建两个数据帧

  26. 26

    如何基于向量隔离数据帧中的值,然后使用R将其乘以同一数据帧中的另一列?

  27. 27

    将数据从一个数据帧复制到另一个数据帧,然后根据值替换数据

  28. 28

    基于部分字符串匹配,从另一数据帧填充一个数据帧列

  29. 29

    根据另一个数据帧的“时间戳”和“id”从一个数据帧中获取最大数量

热门标签

归档