我是R的新手,只用了几个月就使用了这个软件。
在数据框中,我有一些带撇号的值,我想将其更改为另一个单词。
我试过了:
data$HomeTeam[data$HomeTeam=="M'Gladbach"]<-"Gladbach"
但我收到一条警告信息:
In [<-.factor(*tmp*, dta$HomeTeam == "M'Gladbach", value = c(2L, :
invalid factor level, NA generated
有什么想法吗?
谢谢!
答案 0 :(得分:3)
您可以尝试sub
data$HomeTeam <- sub("^[^']*'", "", data$HomeTeam)
data$HomeTeam
#[1] "Gladbach" "Sonja" "Henderson" "Marshall"
sub
输出将是'character'类。如果我们需要保留“因子”类,您可以在“HomeTeam”的级别上尝试sub
并将输出分配回“级别”(如@thelatemail的评论中所示)
levels(data$HomeTeam) <- sub("^[^']*'","",levels(data$HomeTeam))
如果您只想将帖子中显示的“M'Gladbach”替换为“Gladbach”,最好将“HomeTeam”列从factor
转换为character
类。最好使用stringsAsFactors=FALSE
或read.table/read.csv
中的data.frame
选项阅读数据集。
由于“HomeTeam”列已经是一个因素,您可以使用as.character
(来自@ rawr的评论)
data$HomeTeam <- as.character(data$HomeTeam)
data$HomeTeam[data$HomeTeam=="M'Gladbach"]<-"Gladbach"
set.seed(22)
data <- data.frame(HomeTeam= c("M'Gladbach", "S'Sonja",
"HR'Henderson", "Marshall"), Value=rnorm(4))