read.delim() 函数用于在 R 中不同点开始的列

read.delim() function for columns that start at different point in R

所以我正在尝试使用 read.delim() 函数查看 CSV(我知道我可以使用 read.csv(),但我需要这样做)。 csv 文件包含从不同点开始的列,那么我将如何合并这样的代码呢? csv 看起来像这样(示例):

,,,Column_D, Column_E,
Column_A, Column_B, Column_C,,,
1,1,2,3,4,
.,.,.,.,.,
.,.,.,.,.,

我试过这样做:

    dataRAW <-  read_delim("./data/something.csv", delim = ",", col_types = cols(
          Column_A = col_integer(),
          Column_B = col_integer(),
          Column_C = col_integer(),
          Column_D = col_integer(),
          Column_E = col_integer()

        ), skip = 1)

R 读取文件时发生的情况是 A B C 列有正确的标题,但 E 和 D 没有。我希望它们都有正确的标题。如果我不使用跳过功能,那么 D 和 E 列将获得正确的标题,但其他列 (ABC) 则不会。

按照@Tung 的建议,您可以跳过前两行,但您可以从数据中收集前两行并将它们组合起来以设置列名,而不是手动设置列名。

library(tidyverse)

d <- read_delim("~/Bureau/something.csv", delim = ",", skip = 2, col_names = FALSE) 
names1 <- read_delim("~/Bureau/something.csv", delim = ",", 
                     skip = 0, n_max = 1, col_names = FALSE) %>% t %>% as.vector
names2 <- read_delim("~/Bureau/something.csv", delim = ",", 
                     skip = 1, n_max = 1, col_names = FALSE) %>% t %>% as.vector

从列名称中删除 "NA",然后用简单的粘贴将它们组合起来。
请注意,在您的示例中,最后一列没有名称,并且“Column_E”以 space 字符开头...

names1[is.na(names1)] <- ""
names2[is.na(names2)] <- ""

colnames(d) <- paste0(names1, names2)

d
#> # A tibble: 3 x 6
#>   Column_A ` Column_B` ` Column_C` Column_D ` Column_E` ``   
#>   <chr>    <chr>       <chr>       <chr>    <chr>       <chr>
#> 1 1        1           2           3        4           <NA> 
#> 2 .        .           .           .        .           <NA> 
#> 3 .        .           .           .        .           <NA>

reprex package (v0.2.0) 创建于 2018-03-10。