0

我有一张看起来像这样的桌子

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
4

2 回答 2

2

尝试na.strings在数据导入期间指定参数。此外,read.csv()您可以编写默认情况下read.csv2()使用的而不是 using 。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"
于 2013-05-22T16:31:15.750 回答
1

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

# not in ('') or ("")
A <- table$A[!table$A %in% ''] 
于 2018-07-03T13:21:10.247 回答