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

klo*_*onq 16 csv r

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)
Run Code Online (Sandbox Code Playgroud)

我也尝试过替换

main_code=Main\ status
Run Code Online (Sandbox Code Playgroud)

main_code="Main status"
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 25

除非您指定check.names=FALSE,否则R会将无效变量名称的列名称(例如,包含空格或特殊字符或以数字开头)转换为有效的变量名称,例如通过用点替换空格.试试names(s_data).如果你使用check.names=TRUE,那么使用单一反引号(`)包围的名称.

我也建议renamereshape包中使用.

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")
Run Code Online (Sandbox Code Playgroud)

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


小智 7

s_data < - read.csv(file = f_name,check.names = FALSE)


Dan*_*son 5

我相信空间被点"替换".导入CSV文件时.所以你要写例如Main.status.您可以输入names(s_data)以查看名称.