如何基于R中的变量拆分数据帧

如何基于R中的变量拆分数据帧,r,R,我有5个变量(年龄、日期、ahe、女性、学士),我想用“女性”一栏分割数据,女性的值为1,男性的值为0。我知道函数split()可以用代码为我拆分: split(data_wage$ahe, data_wage$female) 但我不明白的是在这部分完成后如何使用这两个分组。 我想在‘ahe’上画两次‘年龄’散点图,一次是女性,一次是男性。任何帮助都将不胜感激 split()返回一个列表,在本例中是两个data.frames的列表,一个用于男性,一个用于女性 LePipe(列表,函数)将对列

我有5个变量(年龄、日期、ahe、女性、学士),我想用“女性”一栏分割数据,女性的值为1,男性的值为0。我知道函数
split()
可以用代码为我拆分:

split(data_wage$ahe, data_wage$female)
但我不明白的是在这部分完成后如何使用这两个分组。 我想在‘ahe’上画两次‘年龄’散点图,一次是女性,一次是男性。任何帮助都将不胜感激

split()返回一个列表,在本例中是两个data.frames的列表,一个用于男性,一个用于女性

LePipe(列表,函数)将对列表中的每个元素应用一个函数,因此,请考虑此代码:

splitList = split(data_wage, data_wage$female)
par(mfrow=c(1,2))
lapply(splitList,function(x){plot(age~ahe,data=x)})
这将为您提供两个并排的散点图,一个用于男性,一个用于女性。

split()返回一个列表,在本例中是两个data.frames的列表,一个用于男性,一个用于女性

LePipe(列表,函数)将对列表中的每个元素应用一个函数,因此,请考虑此代码:

splitList = split(data_wage, data_wage$female)
par(mfrow=c(1,2))
lapply(splitList,function(x){plot(age~ahe,data=x)})

这将为您提供两个并排的散点图,一个用于男性,一个用于女性。

split
可以避免此类问题,特别是如果您使用“lattice”或“ggplot2”等工具

以下是一种基于“晶格”的方法:

## sample data
set.seed(1)
mydf <- data.frame(
  ahe = sample(100, 1000, TRUE),
  age = sample(18:60, 1000, TRUE),
  female = sample(c(0, 1), 1000, TRUE)
)

## Convert the female column to a factor
## Not necessary, but makes the output nicer
mydf$female <- factor(mydf$female, c(0, 1), c("male", "female"))

## Load the lattice package
library(lattice)

## Side by side
xyplot(ahe ~ age | female, data = mydf)

对于此类问题,可以避免拆分
,特别是在使用“lattice”或“ggplot2”等工具时

以下是一种基于“晶格”的方法:

## sample data
set.seed(1)
mydf <- data.frame(
  ahe = sample(100, 1000, TRUE),
  age = sample(18:60, 1000, TRUE),
  female = sample(c(0, 1), 1000, TRUE)
)

## Convert the female column to a factor
## Not necessary, but makes the output nicer
mydf$female <- factor(mydf$female, c(0, 1), c("male", "female"))

## Load the lattice package
library(lattice)

## Side by side
xyplot(ahe ~ age | female, data = mydf)

使用“子集”创建一个只包含所需记录的新数据帧。使用逻辑运算符(如
data\u wage$female==1)指定该值:

`data_wage_female <- subset(data_wage, data_wage$female==1)

data_wage_male <- subset(data_wage, data_wage$female==0)

     ## now you can plot females and males separately using these subsets:
plot(data_wage_female$age ~ data_wage_female$ahe, col="red")  

     ## plots females with red symbols
points(data_wage_male$age ~ data_wage_male$ahe, col="blue")
 ## plots males with blue symbols on the same scatter plot'
`data\u wage\u female使用“subset”创建一个只包含所需记录的新数据框。使用逻辑运算符(如
data\u wage$female==1)指定该值:

`data_wage_female <- subset(data_wage, data_wage$female==1)

data_wage_male <- subset(data_wage, data_wage$female==0)

     ## now you can plot females and males separately using these subsets:
plot(data_wage_female$age ~ data_wage_female$ahe, col="red")  

     ## plots females with red symbols
points(data_wage_male$age ~ data_wage_male$ahe, col="blue")
 ## plots males with blue symbols on the same scatter plot'

`data\u wage\u女性将不胜感激!任何人都将不胜感激!这是怎么回事?您已经拆分了两列,然后正在打印拆分数据中不存在的列。另外,我不记得
plot
data
参数。@AnandaMahto感谢您在我的split函数中捕捉到错误-它应该是第一个参数的整个data.frame<代码>绘图
没有显式的
数据
参数,但它接受它。这将如何工作?您已经拆分了两列,然后正在打印拆分数据中不存在的列。另外,我不记得
plot
data
参数。@AnandaMahto感谢您在我的split函数中捕捉到错误-它应该是第一个参数的整个data.frame
plot
没有显式的
data
参数,但它接受该参数。