在R

时间:2017-02-01 13:01:35

标签: r dataframe

我使用的数字数据的一些.csv文件包含错误,每个错误都标记为随机字符串,例如在读入后,数据框可能如下所示:

set.seed(123)
rand.str <-  paste0(letters[sample(10)], collapse="")
wrong.output <- data.frame(a=1:5, b=c(4:5, rand.str, 7:8), stringsAsFactors=FALSE)

在这种情况下,正确的输出是:

proper.output <- data.frame(a=1:5, b=c(4:5, NA, 7:8))

使用read.csv阅读后,每列至少有一个字符值被视为character列。

我可以在读入文件时将错误(随机字符串)标记为NA吗?如果没有,用NA来对它们进行子集化的最方便,最合适或最快的方法是什么?

na.strings中有read.csv个参数,但只有在更简单的情况下才能使用它,如:na.strings=c("-", "unavailable")

(看不到任何重复,所以我猜有简单的解决方法)

colClasses建议不起作用

read.csv("test.txt", sep=",", colClasses = c("numeric", "numeric"))
  

扫描错误(file = file,what = what,sep = sep,quote = quote,dec = dec,:     scan()期待&#39;真正的&#39;,得到&#39; chdgfajibe&#39;   另外:警告信息:   在read.table(file = file,header = header,sep = sep,quote = quote,:     readTableHeader在&#39; test.txt&#39;

上找到的不完整的最后一行

2 个答案:

答案 0 :(得分:1)

我从7年前的csv阅读的不同解决方案中改编了这个解决方案。我认为这是一个更清洁的解决方案。它可以提供您想要的输出。

setClass("Alpha")
# replacing words with empty characters
setAs("character", "Alpha", 
      function(from) as.numeric(gsub('[[:alpha:]]+', '', from) ) )
read.csv('data.csv', colClasses = c('numeric','Alpha'))

输出

  a  b
1 1  4
2 2  5
3 3 NA
4 4  7
5 5  8

来源:How to read data when some numbers contain commas as thousand separator?

答案 1 :(得分:0)

解决方案是:

String isFormAlreadySubmitted = driver.findElement(By.xpath("//div[@class='alert alert-error' or @class='alert alert-success']")).getText()