使用.csv
将newdata
文件读入数据框read.csv
时遇到了一个非常奇怪的问题。
其中一列是" Site",它应该是一个字符串:
typeof(newdata$Site)
检查列的类型,我会得到结果"整数"。table(newdata$Site)
检查每个字符串的出现频率,并将此表写入.csv
文件,我会为每个值获得一个合适的频率表,并附加其他数值(例如一列没有带数字值的名称,一列名为var1
,其中包含网站字符串(例如" www.google.com")和一列名为Freq
的频率列。 我尝试创建一个新列,将多个值合并为一个(例如" www.google.com"" www.google.co.uk"进入" Google")我使用了grepl
,然后我意识到R将原始列视为字符串......
当我尝试仅通过a = newdata[,"Site"]
对此列进行子集时,我就明白了
a
属于类型因素 ...将其写入.csv
会导致所有值的一长行....
我做错了什么????我对这些东西不熟悉,我真的不知道该怎么办......
感谢!!!
答案 0 :(得分:1)
你已经挖了很多东西。您知道,您的列Site
是一个因素,它有typeof()
整数。
要避免在读取数据时将字符串编码为因子,请使用:
read.csv(..., stringsAsFactors = FALSE)
因子存储为整数,其中整数给出其级别的位置。尝试:
x <- gl(3,2,labels=letters[1:3])
#[1] a a b b c c
#Levels: a b c
typeof(x)
#[1] "integer"
levels(x)
#[1] "a" "b" "c"
levels(x)[x] ## equivalent to "as.character(x)", but more efficient
#[1] "a" "a" "b" "b" "c" "c"