根据r中另一个数据帧的匹配ID从数据帧中添加最低值
我有两个数据帧(数据帧#1和#2)。 数据帧#2中A列和B列中的值来自数据帧#1中的列ID#1,表示 每个ID_2行的相邻(即相邻)区域。也就是说,数据帧#2(即ID#2=7)的第一行与ID#1=1和2相邻 我想做的是: 如果可以在数据框2的a列或B列中找到ID#1的值,我希望找到第一年的最低值,并将其作为新列添加到数据框1中。请参考数据框#3了解我要创建的表。 例如,ID#1=1显示在数据框#2中的第#1和第4行中,最早的第一年是1990年 如果有人能帮助我,我将不胜感激。祝你晚上愉快根据r中另一个数据帧的匹配ID从数据帧中添加最低值,r,dataframe,R,Dataframe,我有两个数据帧(数据帧#1和#2)。 数据帧#2中A列和B列中的值来自数据帧#1中的列ID#1,表示 每个ID_2行的相邻(即相邻)区域。也就是说,数据帧#2(即ID#2=7)的第一行与ID#1=1和2相邻 我想做的是: 如果可以在数据框2的a列或B列中找到ID#1的值,我希望找到第一年的最低值,并将其作为新列添加到数据框1中。请参考数据框#3了解我要创建的表。 例如,ID#1=1显示在数据框#2中的第#1和第4行中,最早的第一年是1990年 如果有人能帮助我,我将不胜感激。祝你晚上愉快 Dat
Dataframe #1
ID_1 col1
1 10
2 15
3 20
4 10
5 20
6 15
在获取长格式的数据帧2后执行联接,并为每个
ID\u 1
获取第一年的最小值
library(dplyr)
library(tidyr)
df1 %>%
left_join(df2 %>%
pivot_longer(cols = c(A, B)), by = c('ID_1' = 'value')) %>%
group_by(ID_1) %>%
summarise(oldest_first_year = min(First_year))
# ID_1 oldest_first_year
# <int> <int>
#1 1 1990
#2 2 1990
#3 3 1991
#4 4 1990
#5 5 1990
#6 6 NA
库(dplyr)
图书馆(tidyr)
df1%>%
左联合(df2%>%
pivot_更长(cols=c(A,B)),by=c('ID_1'='value'))%>%
分组人(ID_1)%>%
总结(最老的第一年=最小(第一年))
#ID_1最老的第一年
#
#1 1 1990
#2 2 1990
#3 3 1991
#4 4 1990
#5 5 1990
#6 NA
数据
df1 <- structure(list(ID_1 = 1:6, col1 = c(10L, 15L, 20L, 10L, 20L,
15L)), class = "data.frame", row.names = c(NA, -6L))
df2 <- structure(list(ID_2 = 7:12, A = c(1L, 3L, 2L, 1L, 4L, 3L), B = c(2L,
4L, 3L, 3L, 5L, 4L), First_year = c(1990L, 1991L, 1995L, 1992L,
1990L, 1999L)), class = "data.frame", row.names = c(NA, -6L))
df1非常感谢你的帮助,Ronak!!!
library(dplyr)
library(tidyr)
df1 %>%
left_join(df2 %>%
pivot_longer(cols = c(A, B)), by = c('ID_1' = 'value')) %>%
group_by(ID_1) %>%
summarise(oldest_first_year = min(First_year))
# ID_1 oldest_first_year
# <int> <int>
#1 1 1990
#2 2 1990
#3 3 1991
#4 4 1990
#5 5 1990
#6 6 NA
df1 <- structure(list(ID_1 = 1:6, col1 = c(10L, 15L, 20L, 10L, 20L,
15L)), class = "data.frame", row.names = c(NA, -6L))
df2 <- structure(list(ID_2 = 7:12, A = c(1L, 3L, 2L, 1L, 4L, 3L), B = c(2L,
4L, 3L, 3L, 5L, 4L), First_year = c(1990L, 1991L, 1995L, 1992L,
1990L, 1999L)), class = "data.frame", row.names = c(NA, -6L))