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,那么使用单一反引号(`)包围的名称.
我也建议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")
Run Code Online (Sandbox Code Playgroud)
对于它的价值,tidyverse工具(即readr::read_csv)具有相反的默认值; 除非您明确请求,否则它们不会转换列名称以使其成为合法的R符号.