【问题标题】:Merging files that are formatted differently in Rstudio在 Rstudio 中合并格式不同的文件
【发布时间】:2018-09-19 19:06:37
【问题描述】:

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

但是,它们的格式不同:带有指标的文件已经为繁殖期的不同阶段占用了两个单独的行,因此一个人每年有多个行。

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

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

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

非常感谢您!

【问题讨论】:

  • 提供一些数据比提供图片要好得多。 dput 可以提供帮助。另外请添加您目前拥有的代码。
  • 你好理查德,谢谢你的回复,问题是我只是在寻找一种方法来格式化这两个 csv 文件(如果可能的话在 Rstudio 中),所以到目前为止还没有代码,只是不知道怎么合并的两个文件。

标签: r csv merge format


【解决方案1】:

您应该首先考虑为什么要合并文件。据我所知,您的文件最好分开保存,因为在您的第一个文件中,您记录了两个阶段的通用指标(标题相同),而在第二个文件中,您记录了两个阶段的不同指标(标题是不同的)。

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

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()

但是,如果您坚持,这里是将 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")

【讨论】:

  • 非常感谢您的回复!我想合并它们的原因是因为我想看看指标(每个阶段已经格式化)如何与这些指标背后的个体的繁殖表现相关(但繁殖表现在每人一行中给定年份,而不是像指标那样分成阶段)。如果解决方案有效,我将更新此内容! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
相关资源
最近更新 更多