簡體   English   中英

如何將因子轉換為數字

[英]How to convert factors into numeric

我的數據:

data <- read.table(text = "Component    Method  Average StdErr
N170    Image   0,58904 0,0066948
P300    Image   0,84932 0,0048678
Sham    Image   0,23944 0,0058078
N170    Topo    0,64384 0,0065159
P300    Topo    0,90278 0,0040316
Sham    Topo    0,32877 0,0063921
N170    Joint   0,65278 0,0064788
P300    Joint   0,84722 0,0048959
Sham    Joint   0,26230 0,0059937", header = TRUE)

我想用ggplot2繪制這個。 在嘗試計算誤差線時,我收到錯誤。 我發現這是因為“平均”是一個因素而不是數字。 運行我的代碼:

ggplot(data=data, aes(x=Method, y=Average, group=Component)) + 
  geom_line(aes(colour=Component), size=1)+
  geom_pointrange(aes(ymin=Average-StdErr, ymax=Average+StdErr))+
  geom_point(aes(colour=Component), size=3)+
  theme_classic()

給我這個錯誤信息:

 Warning messages: 1: In Ops.factor(Average, StdErr) : '-' not meaningful for factors 2: In Ops.factor(Average, StdErr) : '+' not meaningful for factors 3: Removed 9 rows containing missing values (geom_pointrange). 

我嘗試使用此代碼將Average和StdErr轉換為數字,但它沒有解決我的問題。

data$Average <- as.numeric(data$Average)
data$StdErr <- as.numeric(as.vector(data$StdErr))

或者,我嘗試將我的數據作為.csv讀取:

data <- read.csv(file="C:/Users/XXX/Desktop/XXX/XX/ggplot/corrComp_agg.csv", 
                 header=TRUE, sep=",")

但是收到一條錯誤消息:

 Error in read.table(file = file, header = header, sep = sep, quote = quote, : more columns than column names 

我錯過了什么?

你應該在read.table語句中使用dec = ","將逗號讀作十進制字符

data <- read.table(text = "Component    Method  Average StdErr
N170    Image   0,58904 0,0066948
                   P300    Image   0,84932 0,0048678
                   Sham    Image   0,23944 0,0058078
                   N170    Topo    0,64384 0,0065159
                   P300    Topo    0,90278 0,0040316
                   Sham    Topo    0,32877 0,0063921
                   N170    Joint   0,65278 0,0064788
                   P300    Joint   0,84722 0,0048959
                   Sham    Joint   0,26230 0,0059937", dec =",", header = TRUE)

現在您的AverageStdErr是數字

sapply(data, class)
#Component    Method   Average    StdErr 
# "factor"  "factor" "numeric" "numeric" 

因此,繪圖現在很容易

ggplot(data=data, aes(x=Method, y=Average, group=Component)) + 
  geom_line(aes(colour=Component), size=1)+
  geom_pointrange(aes(ymin=Average-StdErr, ymax=Average+StdErr))+
  geom_point(aes(colour=Component), size=3)+
  theme_classic()

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM