合并在Rstudio

时间:2018-04-10 08:31:39

标签: r csv merge format

对于我的硕士论文,我试图合并两个文件,它们包含以下内容: 一个人有我的研究对象(海鸥)的指标,另一个有这些鸟的繁殖成功。

然而,它们的格式不同:具有指标的文件已经为育种期的不同阶段采用了两个单独的行,因此个人每年有多行。

另一个繁殖成功的文件没有,每个人每年只有一行,属于这些行的列代表每个繁殖阶段的繁殖参数。

现在我知道我不能直接“合并”#39; Rstudio中的两个文件,所以我想知道如何格式化文件,以便我可以。

我会添加图片以帮助解释:  First file  Second file

非常感谢你!

1 个答案:

答案 0 :(得分:0)

首先应考虑为什么要合并文件。从我所看到的情况来看,您的文件最好保持独立,因为在您的第一个文件中,您正在记录两个阶段的常用指标(标题相同),而在第二个文档中,您正在记录两个阶段的不同指标(标题)是不同的)。

由于第二个文件包含两个阶段的不同标题,因此无法将其转换为第一个文件的类似形式。但是,可以将第一个文件转换为第二个文件的格式,从而允许您组合这两个文件。但是我强烈反对这一点,因为它可能会阻止您以这种方式快速分析数据。

library(ggplot2)
dat <- read.csv("file1.csv")
# This plots a boxplot comparing the evenness of the 2 phases
ggplot(dat, aes(x = as.factor(period), y = evenness)) + geom_boxplot()

Boxplot sample

但是,如果你坚持,这里的代码是将file1重新格式化为每个条目一行,与file2结合

# One more warning, depending on how you 
# want to eventually wrangle your data, 
# doing this might make your life more difficult

library(dplyr)
f1 <- read.csv("file1.csv", stringAsFactors = FALSE)
dat1 <- dat[f1$phase == "incubating",]
dat2 <- dat[f1$phase == "chickrearing",]
dat2$phase <- dat1$phase <- NULL
names(dat1) <- c("bird.year", paste0("incubating.", names(dat1)[2:length(names(dat1))]))
names(dat2) <- c("bird.year", paste0("chickrearing.", names(dat2)[2:length(names(dat2))]))

f1.combined <- merge(dat1, dat2, by = "bird.year")

f2 <- read.csv("file2.csv")
f2 <- mutate(f2, bird.year = paste(Individual, year))

combined.files <- merge(f1.combined, f2, by = "bird.year")