Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何合并3列上的2个数据帧,所有列都具有不同的列名_R_Merge - Fatal编程技术网

R如何合并3列上的2个数据帧,所有列都具有不同的列名

R如何合并3列上的2个数据帧,所有列都具有不同的列名,r,merge,R,Merge,我试图对同一列使用不同名称的两个不同数据集进行内部联接合并。我需要在三列上合并。我检查了stackoverflow和其他源,但问题合并到同一列的同名数据源上 当前代码: state <- c('AZ','MD','NY', 'CA', 'FL') STATE_ID <- c('AZ','MD','NY', 'CA', 'FL') month <- c(1,2,3,4,5,6,7,8,9,10,11,12) MONTH_ID <- c(1,2,3,4,5,6,7,8,9,1

我试图对同一列使用不同名称的两个不同数据集进行内部联接合并。我需要在三列上合并。我检查了stackoverflow和其他源,但问题合并到同一列的同名数据源上

当前代码:

state <- c('AZ','MD','NY', 'CA', 'FL')
STATE_ID <- c('AZ','MD','NY', 'CA', 'FL')
month <- c(1,2,3,4,5,6,7,8,9,10,11,12)
MONTH_ID <- c(1,2,3,4,5,6,7,8,9,10,11,12)
year <- c(2001, 2002, 2003, 2004)
YEAR_ID <- c(2001, 2002, 2003, 2004)
# note all rates are fake numbers
eduRate <- (7.5, 6.2, 1.3, 9.9, ....)
otherCol <- c('a','b','c','d','e','f','g' ....)
DROPOUT_RATE <- c(1.2, 3.2, 5.3, 1.9, ....)
someOtherCol <- c('a','b','c','d','e','f','g' ....)
anotherCol <- c('a','b','c','d','e','f','g' ....)

data1 <- data.frame(state, month, year, eduRate, otherCol)
data2 <- data.frame(STATE_ID, MONTH_ID, YEAR_ID, DROPOUT_RATE, someOtherCol, anotherCol)

mergeDf <- merge(x=data1, y=data2, 
                    by.x=state, by.y=STATE_ID, 
                    by.x=month, by.y=MONTH_ID,
                    by.x=year, by.y=YEAR_ID)    #  <-- NOT WORKING

mergeDf(x=data1, y=data2, by=c("state","year","month"))  # <-- cannot use because column names per data set different

我喜欢tidyverse的dplyr中连接多个键的语法

state <- c('AZ','MD','NY', 'CA')
STATE_ID <- c('AZ','MD','NY', 'CA')
month <- c(1,2,3,4)
MONTH_ID <- c(1,2,3,4)
year <- c(2001, 2002, 2003, 2004)
YEAR_ID <- c(2001, 2002, 2003, 2004)
# note all rates are fake numbers
eduRate <- c(7.5, 6.2, 1.3, 9.9)
otherCol <- c('a','b','c','d')
DROPOUT_RATE <- c(1.2, 3.2, 5.3, 1.9)
someOtherCol <- c('a','b','c','d')
anotherCol <- c('a','b','c','d')

data1 <- data.frame(state, month, year, eduRate, otherCol)
data2 <- data.frame(STATE_ID, MONTH_ID, YEAR_ID, DROPOUT_RATE, someOtherCol, anotherCol)


df<- data1 %>%
  left_join(data2, by=c("state"="STATE_ID","month"="MONTH_ID", "year"="YEAR_ID"))

说明读卡器无法运行您的代码。有许多错误。例如,
eduRate我键入的。。。所以我不需要全部输入6000行。如果试图帮助你的人不能测试他们对你问题的解决方案是否有效,你就不可能得到帮助。请提供您的读者可以运行的代码。其他人可以帮助吗?我只需要有关merge语句的帮助。我的数据框架很清晰。
state <- c('AZ','MD','NY', 'CA')
STATE_ID <- c('AZ','MD','NY', 'CA')
month <- c(1,2,3,4)
MONTH_ID <- c(1,2,3,4)
year <- c(2001, 2002, 2003, 2004)
YEAR_ID <- c(2001, 2002, 2003, 2004)
# note all rates are fake numbers
eduRate <- c(7.5, 6.2, 1.3, 9.9)
otherCol <- c('a','b','c','d')
DROPOUT_RATE <- c(1.2, 3.2, 5.3, 1.9)
someOtherCol <- c('a','b','c','d')
anotherCol <- c('a','b','c','d')

data1 <- data.frame(state, month, year, eduRate, otherCol)
data2 <- data.frame(STATE_ID, MONTH_ID, YEAR_ID, DROPOUT_RATE, someOtherCol, anotherCol)


df<- data1 %>%
  left_join(data2, by=c("state"="STATE_ID","month"="MONTH_ID", "year"="YEAR_ID"))