相关疑难解决方法(0)

如何加入(合并)数据框(内部,外部,左侧,右侧)?

给出两个数据框:

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风格,加入?也就是说,我该怎么做:

  • 一个内连接df1df2:
    只返回行中左表在右表匹配的密钥.
  • 一个外连接df1df2:
    返回两个表中的所有行,从有右表中的匹配键左连接记录.
  • 甲 …

merge join r dataframe r-faq

1155
推荐指数
13
解决办法
108万
查看次数

将Data.frames列表重新组合到单个数据框中

如果这个问题已经得到解答,我很抱歉.另外,这是我第一次使用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()告诉我只允许更换元素.

有人能告诉我我做错了什么以及如何重新组合数据帧?

谢谢

r list dataframe

30
推荐指数
4
解决办法
3万
查看次数

将多个data.frames合并为一个带循环的data.frame

我想把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)

即使它工作得很好我想知道是否有更优雅的方式来完成工作?

loops for-loop r

27
推荐指数
1
解决办法
3万
查看次数

在R中追加数据

我正在制作一个脚本,我对一堆数据进行了很多操作,并且我对另一个数据集执行了相同的操作.两个数据集都具有相同的行,列和标题.我希望能够将两个数据集连接在一起,我将数据集A放在数据集B之上.我不需要数据集B的标题,而只是将所有数据聚集在一起,就像它们从未真正分开一样第一名.有没有简单的方法来做到这一点?

r dataset

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

r ×4

dataframe ×2

dataset ×1

for-loop ×1

join ×1

list ×1

loops ×1

merge ×1

r-faq ×1