R:导入包含空格的列名称的CSV

时间:2011-05-25 12:35:09

标签: r csv

CSV文件如下所示(为简洁起见而修改)。有几列在标题中有空格,R似乎无法区分它们。

Alias;Type;SerialNo;DateTime;Main status; [...]
E1;E-70;781733;01/04/2010 11:28;8; [...]

以下是我要执行的代码:

s_data <- read.csv2( file=f_name )
attach(s_data)

s_df = data.frame( 
                scada_id=ID,
                plant=PlantNo, 
                date=DateTime,
                main_code=Main status,
                seco_code=Additional Status,
                main_text=MainStatustext,
                seco_test=AddStatustext,
                duration=Duration)

detach(s_data)

我也尝试过替换

main_code=Main\ status

main_code="Main status"

3 个答案:

答案 0 :(得分:24)

除非您指定check.names=FALSE,否则R会将无效变量名称的列名称(例如,包含空格或特殊字符或以数字开头)转换为有效的变量名称,例如:用点替换空格。试试names(s_data)。如果您执行使用check.names=TRUE,请使用单引号(`)括起名称。

我还建议您使用rename包中的reshape

s_data <- read.csv2( file=f_name )
library(reshape)
s_df <- rename(s_data,ID="scada_id",
               PlantNo="plant",DateTime="date",Main.status="main_code",
               Additional.status="seco_code",MainStatustext="main_text",
               AddStatustext="seco_test",Duration="duration")

对于它的价值,tidyverse工具(即readr::read_csv)具有相反的默认值;除非您明确要求,否则他们不会转换列名称以使其成为合法的R符号。

答案 1 :(得分:5)

我相信空间被点“替换”。导入CSV文件时。所以你要写,例如Main.status。您可以输入names(s_data)进行检查,看看名称是什么。

答案 2 :(得分:5)

s_data&lt; - read.csv(file = f_name,check.names = FALSE)