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。
所以我正在尝试使用 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。