将带引号的列标识为字符/分类

时间:2017-06-11 14:47:03

标签: r

我有一个csv,其中一些列是引号之间的整数: "14", "3", "6", "3"和其他列是不带引号的整数:3, 5, 0, 2

当我将csv导入R时,有没有办法自动检测引号之间的整数作为字符或分类的列和整数而没有引号作为整数的列?

2 个答案:

答案 0 :(得分:4)

quote = ""添加到read.csv语句中。 as.is=TRUE确保字符而不是因子用于引用的列。为避免标题中的引号,我们将col.names设置为未使用quotes=""的第二个读取版本的名称。如果希望引号成为数据的一部分,则省略标记为##的最后一行。

Lines <- '"a","b"\n"1",1'
DF <- read.csv(text = Lines, quote = "", as.is = TRUE, 
         col.names = names(read.csv(text = Lines, nrow = 1)))
DF[] <- lapply(DF, function(x) if (inherits(x, "character")) gsub('"', '', x) else x) ##

,并提供:

> str(DF)
'data.frame':   1 obs. of  2 variables:
 $ a: chr "1"
 $ b: int 1

答案 1 :(得分:0)

您可以使用包readr

> readr::read_csv("test.txt", col_types = "ci")
# A tibble: 1 × 2
    `2`   `3`
  <chr> <int>
    1    14