我在数据框中有2个变量,有300个观察值。
$ imagelike: int 3 27 4 5370 ...
$ user: Factor w/ 24915 levels "\"0.1gr\"","\"008bla\"", ..
然后我尝试删除重复项,例如"- "
出现2次:
testclean <- data1[!duplicated(data1), ]
这给了我一条警告信息:
In Ops.factor(left): "-"not meaningful for factors
然后我将其转换为maxtrix:
data2 <- data.matrix(data1)
testclean2 <- data2[!duplicated(data2), ]
这就是诀窍 - 然而 - 它将userNames
转换为数字。
=============================================== ========================== 我是新手,但我已经尝试查看此主题的先前帖子(包括下面的帖子),但它没有成功:
答案 0 :(得分:1)
您图片中的一些示例数据(请不要发布数据图片!):
data1 <- data.frame(imageLikeCount = c(3,27,4,4,16,103),
userName = c("\"testblabla\"", "test_00", "frenchfries", "frenchfries", "test.inc", "\"parmezan_pizza\""))
str(data1)
# 'data.frame': 6 obs. of 2 variables:
# $ imageLikeCount: num 3 27 4 4 16 103
# $ userName : Factor w/ 5 levels "\"parmezan_pizza\"",..: 2 5 3 3 4 1
要解决因素以及嵌入式引号的问题:
data1$userName <- gsub('"', '', as.character(data1$userName))
str(data1)
# 'data.frame': 6 obs. of 2 variables:
# $ imageLikeCount: num 3 27 4 4 16 103
# $ userName : chr "testblabla" "test_00" "frenchfries" "frenchfries" ...
与@DanielWinkler建议的一样,如果您可以更改数据的读入或定义方式,您可以选择包含stringsAsFactors = FALSE
(此参数在许多函数中都被接受,包括read.csv
,{{ 1}}和大多数read.table
函数包括data.frame
和as.data.frame
):
rbind
(请注意,这仍然包含嵌入式引号,因此您仍需要data1 <- data.frame(imageLikeCount = c(3,27,4,4,16,103),
userName = c("\"testblabla\"", "test_00", "frenchfries", "frenchfries", "test.inc", "\"parmezan_pizza\""),
stringsAsFactors = FALSE)
str(data1)
# 'data.frame': 6 obs. of 2 variables:
# $ imageLikeCount: num 3 27 4 4 16 103
# $ userName : chr "\"testblabla\"" "test_00" "frenchfries" "frenchfries" ...
之类的内容。)
现在,我们的数据如下所示:
data1$userName <- gsub('"', '', data1$userName)
您需要删除重复项:
data1
# imageLikeCount userName
# 1 3 testblabla
# 2 27 test_00
# 3 4 frenchfries
# 4 4 frenchfries
# 5 16 test.inc
# 6 103 parmezan_pizza
答案 1 :(得分:-1)
尝试
data$userName <- as.character(data$userName)
然后
data<-unique(data)
您还可以在读取数据时传递参数stringAsFactor = FALSE
。这通常是一个好主意。