as.factor改变二进制变量的值 - 这弄乱了我的ggplot

时间:2017-10-06 09:54:42

标签: r ggplot2

我正在对导入的STATA数据集进行逻辑回归。

其中一个变量是二元变量,但是作为原子导入。我在导入后将此变量从原子更改为因子。执行此更改时,R会自动将值从0和1更改为1和2。

谁在乎 - 它运作正常? 是的,直到我需要使用ggplot绘制平滑的线条。 在这里,我需要使用as.numeric()以获得我的绘图中的平滑线。因为我使用as.numeric,所绘制的值现在介于1和2之间,而不是0和1。 如果我不使用as.numeric(),则不会出现平滑线。

你能帮我解决这个问题吗?

下面的代码重新创建了问题:

ID <- rep(1:10)
BIN <- rep(0:1, 10)
INDEPENDENT <- runif(10, min=1, max=100)
df <- as.data.frame.matrix(cbind(ID, BIN, INDEPENDENT))

# Please stop and inspect the values under BIN before running next line

df$BIN <- as.factor(df$BIN)

# Please reinspect the BIN values after running the as.factor line

df$BIN <- factor(df$BIN, levels = c(0,1), label = c("No", "Yes")) 

library(ggplot2)
ggplot(df, aes(INDEPENDENT, as.numeric(BIN)))+
  geom_point()+
  geom_smooth(method = "loess")+
  ylab("Now I have to write this annoying line explaining that: \n 1=No 
  2=Yes")

1 个答案:

答案 0 :(得分:2)

我认为这解决了你的密谋问题:

library(ggplot2)
ID <- rep(1:10)
BIN <- rep(0:1, 10)
INDEPENDENT <- runif(10, min=1, max=100)
df <- as.data.frame.matrix(cbind(ID, BIN, INDEPENDENT))
df$BIN <- factor(df$BIN, levels = c(0,1), label = c("No", "Yes")) 

ggplot(df, aes(INDEPENDENT, BIN))+
  geom_point()+
  geom_smooth(aes(y = as.numeric(BIN)), method = "loess")

enter image description here