我的数据集testdata
有两个名为PWGTP
和AGEP
的变量
数据位于.csv
文件中。
当我这样做时:
> head(testdata)
变量显示为
ï..PWGTP AGEP
23 55
26 56
24 45
22 51
25 54
23 35
因此,出于某种原因,R正在将PWGTP
作为ï..PWGTP
阅读。没什么大不了的。
但是,当我使用某个函数来引用变量ï..PWGTP
时,我收到了消息:
错误:数据中找不到id变量:ï..PWGTP
同样,当我使用某个函数来引用变量PWGTP
时,我收到消息:
错误:数据中找不到id变量:PWGTP
2个问题:
我是否应该对源文件做些什么来防止变量名PWGTP
的错误?
将ï..PWGTP
重命名为其他内容应该是微不足道的 - 但R
无法找到这样命名的变量。您对如何修复变量名称的看法?
答案 0 :(得分:1)
这是一个BOM(字节顺序标记)UTF-8问题。
为防止这种情况发生,有2个选项:
fileEncoding = "UTF-8-BOM"
或read.table
read.csv
醇>
示例:
mydata <- read.table(file = "myfile.txt", fileEncoding = "UTF-8-BOM")
答案 1 :(得分:0)
文件中的列名可能是1 PWGTP
在数字(或其他)之间的空格以及在R中读取时导致..
的字符。一种方法防止这种情况是在check.names = FALSE
read.csv/read.table
d1 <- read.csv("yourfile.csv", header=TRUE, stringsAsFactors=FALSE, check.names=FALSE)
但是,最好不要让名字以数字开头或中间有空格。
因此,假设,如果OP使用默认选项(即使用check.names = TRUE
)读取数据,我们可以使用sub
更改列名称
names(d1) <- sub(".*\\.+", "", names(d1))
作为一个例子
sub(".*\\.+", "", "ï..PWGTP")
#[1] "PWGTP"