как удалить не алфавитные символы и столбцы из CSV-файла - PullRequest
0 голосов
/ 02 мая 2018

У меня есть CSV-файл, который выглядит следующим образом:

enter image description here

А в некоторых частях данные в столбцах выглядят так:

enter image description here

так как вы можете видеть, и поскольку присутствует знак "=", он хочет преобразовать его в формулу, но в данном случае мне нужно слово "rama ...

Я извлек этот термин из файла со спамом и преобразовал R в разреженную матрицу. Итак, у меня есть вопрос, как мне избавиться от не алфавитно-цифровых символов из этого заголовка в R, а затем снова преобразовать его в файл CSV?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Если вы хотите буквальный ответ, вы можете попробовать использовать gsub для замены любой записи, содержащей один или несколько не алфавитно-цифровых символов:

df <- data.frame(v1=c(1,2,3), v2=c("#NAME?", "two", "#NAME?"),
    stringsAsFactors=FALSE)
df <- data.frame(sapply(df, function(x) gsub(".*[^A-Za-z0-9].*", "", x)))
df

  v1  v2
1  1    
2  2 two
3  3    

Демо

Но самое лучшее / простое, что можно сделать здесь, это, вероятно, просто исправить ваши формулы Excel так, чтобы вы ловили эти ошибки, и просто отображать пустую строку или какое-то другое разумное сообщение. Из того, что я вижу, это проблема Excel, а не R.

0 голосов
/ 02 мая 2018

Вы можете использовать gsub для этого:

## A dummy matrix
example <- matrix(paste0("=", letters[1:9]),3,3)
#     [,1]  [,2]  [,3] 
#[1,] "= a" "= d" "= g"
#[2,] "= b" "= e" "= h"
#[3,] "= c" "= f" "= i"

Вы можете удалить "=", заменив его на "" в gsub

## Replacing the "=" by "" (nothing)
gsub("=", "", example)
#     [,1] [,2] [,3]
#[1,] "a"  "d"  "g" 
#[2,] "b"  "e"  "h" 
#[3,] "c"  "f"  "i" 

Или только в первой строке (или в имени столбца и т. Д.)

## Removing the "=" in the first row
example <- gsub("=", "", example[,1])
#     [,1] [,2] [,3]
#[1,] "a"  "d"  "g" 
#[2,] "=b"  "=e"  "=h" 
#[3,] "=c"  "=f"  "=i" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...