在R中使用as.character时删除空单元格

时间:2013-05-22 14:51:29

标签: r

我有一个看起来像这样的表

A   B   C
AB ABC  CBS
AB      ABC
   ADS  
        BBB

想要将列用作字符,因此使用此

 A= as.character(table$A) 

这导致c(“AB”, “AB”, “”)我的目标是c(“AB”, “AB”),因此没有空单元格""。为了了解空单元格,我使用了A=A[!A==""]来提供我想要的结果,但必须有更优雅的方法来实现相同的目标。

可能问题是1)是否有更好的方法来删除空字符/单元格。 或者更一般2)有没有办法将3列(A,B,C)转换为字符A,B,C而不使用空单元格。

由于

 'data.frame':  3 obs. of  3 variables:
         $ A: Factor w/ 2 levels "","AB": 2 2 1
         $ B: Factor w/ 3 levels "","ABC","ADS": 2 1 3
         $ C: Factor w/ 3 levels "ABC","BBB","CBS": 3 1 2

2 个答案:

答案 0 :(得分:2)

尝试在数据导入期间指定参数na.strings。此外,您可以编写read.csv(),而不是使用read.csv2(),默认情况下使用sep = ";"

# Import data
data <- read.csv2("/path/to/data.csv", header = TRUE,
                  na.strings = "", stringsAsFactors = FALSE)
str(data)

'data.frame':   4 obs. of  3 variables:
 $ A: chr  "AB" "AB" NA NA
 $ B: chr  "ABC" NA "ADS" NA
 $ C: chr  "CBS" "ABC" NA "BBB"

# Exclude NAs
as.character(na.exclude(data$A))

[1] "AB" "AB"

答案 1 :(得分:1)

如果您不想再次读取数据集,则可以使用:

# not in ('') or ("")
A <- table$A[!table$A %in% '']