Как указано в комментарии, столбец должен быть первым принуждают (в пересчете) в классе character
от тока factor
класса с помощью as.character
.
Этого можно избежать на этапе чтения файла с помощью параметра stringsAsFactors=FALSE
Нарезки каждой строку и сохраняя только первое значение может быть сделано с:
copyDF$Var1 = sapply(strsplit(copyDF$Var1,","),head,1)
Дайте нам знать, если это работает:
#user input data with factor class
userDF = structure(list(Var1 = structure(1:6, .Label = c("", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "c(\"B1\", \"B1\")", "c(\"B3\", \"B4\")", "c(\"B4\", \"B2\")"), class = "factor"), Freq = c(2538L, 633L, 458L, 328L, 135L, 56L)), .Names = c("Var1", "Freq"), row.names = c(NA, 6L), class = "data.frame")
userDF
# Var1 Freq
#1 2538
#2 B1 633
#3 B2 458
#4 B3 328
#5 B4 135
#6 B5 56
str(userDF)
# 'data.frame': 6 obs. of 2 variables:
#$ Var1: Factor w/ 12 levels "","B1","B2","B3",..: 1 2 3 4 5 6
#$ Freq: int 2538 633 458 328 135 56
#Since userDF had no multiple values, adding them here
newDF = structure(list(Var1 = structure(1:6, .Label = c("B1,B2,B3", "B4,B5", "B6,B7,B8", "B3", "B4", "B5", "B6", "B7", "B8", "c(\"B1\", \"B1\")", "c(\"B3\", \"B4\")", "c(\"B4\", \"B2\")"), class = "factor"), Freq = c(2538L, 633L, 458L, 328L, 135L, 56L)), .Names = c("Var1", "Freq"), row.names = c(NA, 6L), class = "data.frame")
newDF
# Var1 Freq
#1 B1,B2,B3 2538
#2 B4,B5 633
#3 B6,B7,B8 458
#4 B3 328
#5 B4 135
#6 B5 56
#Make a copy of the dataset
copyDF = newDF
#Var1 is of class factor which is not amenable for string operations,hence convert to character class
copyDF$Var1 = as.character(copyDF$Var1)
#Split each row, unlist and retain only first value
copyDF$Var1 = sapply(strsplit(copyDF$Var1,","),head,1)
copyDF
# Var1 Freq
#1 B1 2538
#2 B4 633
#3 B6 458
#4 B3 328
#5 B4 135
#6 B5 56
Не могли бы вы предоставить 'dput (head (df))'? –
Если это произошло из чтения в файле с оборванным количеством столбцов, вернемся к команде 'read.csv()' и, пожалуйста, 'dput()' us заголовок файла + первые несколько строк. – smci
Структура (список (Var1 = структура (1: 6, .Label = c ("", "B1", "B2", "B3", "B4", "B5", "B6", "B7" "B8", "c (\" B1 \ ", \" B1 \ ")", "c (\" B3 \ ", \" B4 \ ")", "c (\" B4 \ ", \" B2 \ ")"), class = "factor"), Freq = c (2538L, 633L, 458L, 328L, 135L, 56L)), .Names = c ("Var1", "Freq"), row.names = c (NA, 6L), class = "data.frame") – rrodrigorn0