【问题标题】:How to remove headers (colnames) after combining several csv files合并多个 csv 文件后如何删除标题(列名)
【发布时间】:2019-05-27 09:48:41
【问题描述】:

我想合并来自多个具有相同格式的 csv 文件的数据,以便我可以分析它们,但我无法从多个合并的文件中删除标题/列名。

我使用了lapply 函数来获取所有这些文件的上下文列表,它看起来像:

ID X1 X2 ---> header of 1st csv file
1  5  6
2  6  9
.......
10 7  8

.

ID X1 X2 --> headers 2nd csv file
1  5  6
2  6  9
.......
10 7  8
e.t.c

如何删除标题字符以便对这些数据应用数学运算?

我的代码:

data<-lapply(files, read.csv)
mean <-(mean(data$column2, na.rm=TRUE))

我也尝试过read.csv(headers=FALSE),但是当函数在 lapply 中时,R 不接受这个

我期望组合文件的数据框的平均值,但我得到了错误:

在 mean.default(data$column2, na.rm = TRUE) 中:参数不是 数字或逻辑:返回 NA

【问题讨论】:

  • 在您的示例中,data 是数据帧列表。最终你想要sapply(data, function(d) mean(d$X2))sapply(data, function(d) mean(d[[3]]))

标签: r


【解决方案1】:

您可以直接导入数据而无需列名:

read_matrix <- function (csvfile) {
    a <- read.csv(csvfile, header=FALSE)
    matrix(as.matrix(a), ncol=ncol(a), dimnames=NULL)
}
df <-  read_matrix('even_iops_Jan15.csv')

另一个选项是将它们设置为 null:

names(df) <- NULL

【讨论】:

  • 这只是将每个数字转换成一个字符。
【解决方案2】:

如果您正确阅读了带有标题的data,我认为您需要做的是首先提取列,然后获取mean

可以提取列

1) 按名称

mean(sapply(data, `[[`, 'column2'), na.rm = TRUE)

2) 按位置

mean(sapply(data, `[[`, 2), na.rm = TRUE)

使用lapply,您需要先unlist 数据

mean(unlist(lapply(data, `[[`, 'column2')), na.rm = TRUE)

【讨论】:

    猜你喜欢
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多