[英]CSV nominal values' wrong recognition in R
我在MS Access中将数字声明为文本(即标称)。 这些数字表示原本可能是长句子的简化版本。
我目前尝试通过以下三种方式将文件导出为csv
:
csv
功能 csv
函数(来自MS Access) 当我尝试使用summary(data)
时,问题出在R中,即使这些值用双引号或单引号引起来,它们仍被解释为数字。 我确信这一点,因为我看到这些变量在summary
函数中给出了均值,中位数和其他变量,而这些变量与带有以频率显示的字符的变量相比。
在下面的示例中, var1
和var2
都是标称值,其中后者由数字表示(请注意var2
结果的值出于安全性而更改)。
var1 var2
Cat : 111 Min. :1
Dog : 222 1st Qu.:1
Bee : 333 Median :8
Yog : 555 Mean :10
Fig : 999 3rd Qu.:1
Kol : 444 Max. :15
(Other):2250
我已经考虑过在这些数字标称值后附加一个字符(而不是1, 2, 3, 4, 5
我将拥有1a, 2a, 3a, 4a, 5a
),以确保将这些字符解释为标称值,但在完成这项艰巨的任务之前,我希望在这里找到一个新的解决方案。
read.table
和family具有colClasses
参数。
请参阅以下示例,以查看使用不同colClasses
时结果的差异:
text <- c("A,B,C", "1,2,3", "2,1,4")
read.csv
A <- read.csv(text = text)
str(A)
# 'data.frame': 2 obs. of 3 variables:
# $ A: int 1 2
# $ B: int 2 1
# $ C: int 3 4
summary(A)
# A B C
# Min. :1.00 Min. :1.00 Min. :3.00
# 1st Qu.:1.25 1st Qu.:1.25 1st Qu.:3.25
# Median :1.50 Median :1.50 Median :3.50
# Mean :1.50 Mean :1.50 Mean :3.50
# 3rd Qu.:1.75 3rd Qu.:1.75 3rd Qu.:3.75
# Max. :2.00 Max. :2.00 Max. :4.00
character
读取数据 B <- read.csv(text = text, colClasses = "character")
str(B)
# 'data.frame': 2 obs. of 3 variables:
# $ A: chr "1" "2"
# $ B: chr "2" "1"
# $ C: chr "3" "4"
summary(B)
# A B C
# Length:2 Length:2 Length:2
# Class :character Class :character Class :character
# Mode :character Mode :character Mode :character
factor
C <- read.csv(text = text, colClasses = "factor")
str(C)
# 'data.frame': 2 obs. of 3 variables:
# $ A: Factor w/ 2 levels "1","2": 1 2
# $ B: Factor w/ 2 levels "1","2": 2 1
# $ C: Factor w/ 2 levels "3","4": 1 2
summary(C)
# A B C
# 1:1 1:1 3:1
# 2:1 2:1 4:1
colClasses
参数接受vector
,因此您可以逐列指定值应为:
D <- read.csv(text = text1, colClasses = c("integer", "character", "factor"))
str(D)
# 'data.frame': 2 obs. of 3 variables:
# $ A: int 1 2
# $ B: chr "2" "1"
# $ C: Factor w/ 2 levels "3","4": 1 2
summary(D)
# A B C
# Min. :1.00 Length:2 3:1
# 1st Qu.:1.25 Class :character 4:1
# Median :1.50 Mode :character
# Mean :1.50
# 3rd Qu.:1.75
# Max. :2.00
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.