根据 R 中第一个数据集的值,向量化来自不同数据集的变量的新变量添加
Vectorize new variable addition of variables from a different dataset depending on values of first dataset in R
我有一个包含许多观察结果和多个变量的数据集“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
我有一个包含许多观察结果和多个变量的数据集“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