【问题标题】:Combining csv files to single data.fram将 csv 文件组合到单个 data.fram
【发布时间】:2016-01-09 14:48:36
【问题描述】:

在我的硬盘上,我有三个 csv 文件。一个名为x.csv 包含数据,一个名为y.csv 包含x 中每一行的单个标签,我有一个headers.csvx 中列的名称。

如何在 R 中将所有这三者组合成一个不错的 data.frame?

对于给定的xyheaders,输出最好看起来像这样:

x.csv
0,1,0,1,1
0,1,1,1,0
1,0,0,0,0

y.csv
X, Y, Z

headers.csv
a, b, c, d, e

data.frame:
label, a, b, c, d, e
    X, 0, 1, 0, 1, 1
    Y, 0, 1, 1, 1, 0
    Z, 1, 0, 0, 0, 0

请注意,第一列是实际列,而不是行名,因为 y.csv. 中的值不是唯一的,是计算所必需的。

【问题讨论】:

  • 你有没有尝试过?你知道read.tablescan 函数吗?或者你是从绝对零 R 知识开始的?
  • 我尝试了一些方法,但总是以讨厌的 data.frames 告终。但是,我总是这样做read.csv。我对scan函数不熟悉。
  • 这3个文件没有保存为1个csv的任何原因?
  • 向我们展示您的所作所为总是一个好主意,这样我们就可以了解您的理解程度。太多人希望在这里完成他们的家庭作业 :) 此外,我们可以解释您的错误并让您学习。
  • 你试过R中的history()函数吗?

标签: r csv dataframe


【解决方案1】:
df <- read.csv("x.csv", header=F, stringsAsFactors=F)

df_rows <- read.csv("y.csv", header=F, stringsAsFactors=F)

rownames(df) <- df_rows[,1]

df_cols <- read.csv("headers.csv", header=F, stringsAsFactors=F)

colnames(df) <- df_cols[,1]

这应该可以。

【讨论】:

  • 对于读取一行字符串文件,如y.csvheaders.csvscan("y.csv",what="",sep=",") 更简洁一些。
  • 也许我的问题弄错了。但是y 值应该是一个实际的列,没有行名。特别是因为我需要对该列进行计算并且值不是唯一的。我更新了我的问题。
  • 然后使用 cbind;尝试以下方法,df
【解决方案2】:

使用read.csv 函数读取您的xyheader 文件

df <- data.frame(x, row.names = y)
colnames(df) <- z

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多