替换数据框的字符元素

时间:2013-12-05 23:38:19

标签: r replace dataframe character element

我有一个数据框和一些字符误读,

example1
1         SABRINA MOCKENHAUPT
2             IRINA MIKITENKO
3         MARILSON DOS SANTOS
4                   RYAN HALL
5                 TIKI GELANA
6            KENTARO NAKAMOTO
7               JAOUAD GHARIB
8                   S…REN KAH
9            CONSTANTINA DITA

我想替换一些元素。例如,替换第八个元素exemple1$exemple1[[8]]<-"SÖREN KAH"。但它告诉我这个错误

In `[[<-.factor`(`*tmp*`, 8, value = c(57L, 29L, 41L, 54L, 65L,  :invalid factor level, NA generated

1 个答案:

答案 0 :(得分:1)

你没有提供一个可重复的例子,所以我猜一点:但问题似乎是example1由因素组成。

这是example1

的基本猜测
example1 <- as.factor(LETTERS[1:9])

当您打印factor1时,您可能会看到以下内容:

R> example1
[1] A B C D E F G H I
Levels: A B C D E F G H I

现在,如果我们尝试使用非因子替换任何项目(上面levels中未列出的内容),我们将收到以下错误(与您的类似):

R> example1[8] <- "KK"
Warning message:
In `[<-.factor`(`*tmp*`, 8, value = "KK") :
  invalid factor level, NA generated

但请注意,您可以将一个列出的因素替换为另一个 - 这意味着example1[8] <- "A"有效。

我的猜测是你不想要因素 - 你想要角色。所以你需要强迫example1加入角色。这样做如下

R> example1.ch <- as.character(example1)

否则您的替换将起作用:

R> example1.ch[8] <- 'kk'
R> example1.ch
[1] "A"  "B"  "C"  "D"  "E"  "F"  "G"  "kk" "I"

通常,您可以使用命令str()来了解您的数据对象是什么 - 当您遇到像这样的奇怪错误时,这将有所帮助。

R> str(example1)
 Factor w/ 9 levels "A","B","C","D",..: 1 2 3 4 5 6 7 1 9