我有一个数据集"df",包含许多观察结果和多个变量,包括一些邮政编码(在某些情况下重复多次)和一个不同的数据集"df2",其中包含这些邮政编码的坐标.我想用这些邮政编码的坐标向我的第一个数据集"df"添加两个新变量,但是,考虑到我拥有的大量数据,循环需要的时间太长了.我想知道我是否可以在保持数据帧 struct 的同时,以某种方式对其进行矢量化,而不转换为矩阵.我附上了我想要实现的一个简化版本.

# This dataset has my variables (removed the rest for simplicity)
df <- data.frame(pc = c("00001", "00002", "00003", 
                        "00001", "00002", "00003", 
                        "00001", "00002", "00003"))
     pc
1 00001
2 00002
3 00003
4 00001
5 00002
6 00003
7 00001
8 00002
9 00003

#This dataset holds the coordinates
df2 <- data.frame(pc = c("00001", "00002", "00003"),
                 lat = c(1, 2, 3),
                 long = c(4, 5, 6))
     pc lat long
1 00001   1    4
2 00002   2    5
3 00003   3    6

#This is the dataset I need
good.df <- data.frame(pc = c("00001", "00002", "00003", 
                             "00001", "00002", "00003", 
                             "00001", "00002", "00003"),
                      lat = c(1, 2, 3, 1, 2, 3, 1, 2, 3),
                      long = c(4, 5, 6, 4, 5, 6, 4, 5, 6))
     pc lat long
1 00001   1    4
2 00002   2    5
3 00003   3    6
4 00001   1    4
5 00002   2    5
6 00003   3    6
7 00001   1    4
8 00002   2    5
9 00003   3    6 

我已经寻找解决办法很长时间了,但考虑到我不知道如何恰当地提出这个问题,我至今没有成功.我真的很想在这里得到一些指导.

非常感谢.

推荐答案

我们可以用dplyr包装中的left_join.pc人加入:

library(dplyr)
left_join(df, df2, by = "pc")
     pc lat long
1 00001   1    4
2 00002   2    5
3 00003   3    6
4 00001   1    4
5 00002   2    5
6 00003   3    6
7 00001   1    4
8 00002   2    5
9 00003   3    6

R相关问答推荐

如何在R中添加截止点到ROC曲线图?

如何从R中的字符串元素中减go 一个数字?

使用tidy—select创建一个新的带有mutate的摘要变量

以相同的方式对每个表进行排序

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

悬崖三角洲超大型群数计算导致整数溢出

从多层嵌套列表构建Tibble?

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

如何将这个小列表转换为数据帧?

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

如何将EC50值绘制在R中的剂量-react 曲线上?

把代码写成dplyr中的group_by/摘要更简洁吗?

从字符串01JAN2021创建日期

真实世界坐标的逆st_变换

将`magick`对象转换为原始向量

如何从矩阵绘制环弦图

即使使用相同的种子,mtry值也取决于TuneGrid范围

如何计算物种矩阵中一行中的唯一个数?

列中的所有值都是真的吗?忽略NA