在R中构建一个因子变量

时间:2017-05-12 22:54:41

标签: r

我有一个数据集(名为wash),描述了华盛顿州几年来的谋杀案。 Victim.SexPerpetrator.Sex有变量。现在我正在尝试建立受害者年龄与犯罪者年龄的散点图,我想在其中放置4条黄土线(每条线代表不同的受害者/犯罪者性别组合)。我正在尝试学习dplyr所以我尝试使用mutate,下面是:

`wash %>%
   mutate(mvic_mperp = (Victim.Sex == "Male" & Perpetrator.Sex == "Male") %>%
   mutate(mvic_fperp = (Victim.Sex == "Male" & Perpetrator.Sex == "Female") %>%
   mutate(fvic_mperp = (Victim.Sex == "Female" & Perpetrator.Sex == "Male") %>%
   mutate(fvic_fperp = (Victim.Sex == "Female" & Perpetrator.Sex == "Female") %>%`

我知道这会创建一个与受害者/犯罪者性别的每个组合相对应的特定变量,但(1)我不确定将所有这些组合起来所需的下一步,以及(2)我确信更容易使用factor()执行此操作的方法,但我不确定如何继续。在此先感谢,我对R和大多数编程都很陌生,所以我仍然在努力学习基础知识。

编辑:要清楚,我正在尝试构建一个因子变量以插入到geom_point()中,而不是具体查看如何构建散点图本身。

1 个答案:

答案 0 :(得分:1)

我将首先合成一些数据,因为你没有提供任何数据。这只是一个随机样本。

df <- data.frame(Perpetrator.Sex = sample(c("M","F"), 50, replace = TRUE),
                 Victim.Sex = sample(c("M","F"), 50, replace = TRUE),
                 Perpetrator.Age = rnorm(50, mean=40, sd =10),
                 Victim.Age = rnorm(50, mean=40, sd =10))

我们实际上不必对数据本身进行任何转换。由于您要使用ggplot2,因此可以使用Perpetrator.Sex函数获得Victim.Sex / interaction次互动。要创建一个由Perpetrator.Sex / Victim.Sex着色的年龄的散点图,您可以使用:

library(ggplot2)
p <- ggplot(df, aes(Perpetrator.Age, Victim.Age)) + 
       geom_point(aes(color = interaction(Perpetrator.Sex, Victim.Sex)))
p 

Scatterplot, no lines

要添加回归线,您可以使用geom_smooth

p + geom_smooth(method='lm', formula = y ~ x, 
                aes(color = interaction(Perpetrator.Sex, Victim.Sex)))

plot with regression lines