r - 根据 R 中第一个数据集的值,向量化来自不同数据集的变量的新变量添加

标签 r dataset vectorization

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

# 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 中第一个数据集的值,向量化来自不同数据集的变量的新变量添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71973143/

相关文章:

r - 如何在R中遍历rpart对象的树结构?我需要获取与子树关联的所有节点,我该怎么做?

r - 将带时间戳的数据与另一个数据集中最接近的时间进行匹配。正确矢量化?更快的方法?

visual-studio-2012 - 将数据集添加到RDLC报表时崩溃

python - 最快的计数向量器实现

r - 如何增加ggplot2中图例的大小

html - 如何使用 R 发送 HTML 电子邮件

javascript - JS中.getAttribute和数据集的区别

c# - c# 中的数据集前 n 行

Python:提高for循环的性能,内部函数调用仅取决于循环索引

assembly - 流内在会降低性能