给出两个数据框:
df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio
Run Code Online (Sandbox Code Playgroud)
我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:
如果这个问题已经得到解答,我很抱歉.另外,这是我第一次使用stackoverflow.
我有一个关于列表,数据框merge()和/或的初学者R问题rbind().
我开始使用看起来像这样的Panel
COUNTRY YEAR VAR
A 1
A 2
B 1
B 2
Run Code Online (Sandbox Code Playgroud)
为了提高效率,我创建了一个列表,其中包含每个国家/地区的一个数据框,并对每个国家/地区执行了各种计算data.frame.但是,我似乎无法将各个数据帧再次组合成一个大帧.
rbind()并merge()告诉我只允许更换元素.
有人能告诉我我做错了什么以及如何重新组合数据帧?
谢谢
我想把merge几个data.frames合二为一data.frame.因为我有一个完整的文件列表,我试图用循环结构来做.
到目前为止,循环方法工作正常.然而,它看起来效率很低,我想知道是否有更快更容易的方法.
这是场景:我有一个包含多个.csv文件的目录.每个文件包含可用作合并变量的相同标识符.由于文件的大小相当大,我想把每个文件一次一个地读入R而不是一次读取所有文件.所以我得到了目录的所有文件,list.files并在前两个文件中读取.之后我用它merge来买一个data.frame.
FileNames <- list.files(path=".../tempDataFolder/")
FirstFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[1], sep=""),
header=T, na.strings="NULL")
SecondFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[2], sep=""),
header=T, na.strings="NULL")
dataMerge <- merge(FirstFile, SecondFile, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
all=T)
Run Code Online (Sandbox Code Playgroud)
现在我使用for循环将所有剩余的.csv文件和merge它们放入已存在的文件中data.frame:
for(i in 3:length(FileNames)){
ReadInMerge <- read.csv(file=paste(".../tempDataFolder/", FileNames[i], sep=""),
header=T, na.strings="NULL")
dataMerge <- merge(dataMerge, ReadInMerge, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
all=T)
}
Run Code Online (Sandbox Code Playgroud)
即使它工作得很好我想知道是否有更优雅的方式来完成工作?
我正在制作一个脚本,我对一堆数据进行了很多操作,并且我对另一个数据集执行了相同的操作.两个数据集都具有相同的行,列和标题.我希望能够将两个数据集连接在一起,我将数据集A放在数据集B之上.我不需要数据集B的标题,而只是将所有数据聚集在一起,就像它们从未真正分开一样第一名.有没有简单的方法来做到这一点?