Rhi*_*oBR 2 loops r subset dataframe
我在R中有一个data.frame.我想使用循环和子集函数创建三个不同的data.frame .我有一个大的data.frame,但我需要的是在下面的例子中:
sex<-c("M","M","M","F","M","F")
age<-c(20,18,17,20,18,17)
name<-c("John", "Joseph", "Bill", "Sarah", "Robert", "Dana")
data<-data.frame(sex, age, name)
>data
sex age name
1 M 20 John
2 M 18 Joseph
3 M 17 Bill
4 F 20 Sarah
5 M 18 Robert
6 F 17 Dana
Run Code Online (Sandbox Code Playgroud)
我想要的是:
>age17
sex age name
1 M 17 Bill
2 F 17 Dana
>age18
sex age name
1 M 18 Joseph
2 M 18 Robert
>age20
sex age name
1 M 20 John
2 F 20 Sarah
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令:
>age17<-subset(data, data[,2]==17)
>age18<-subset(data, data[,2]==18)
>age20<-subset(data, data[,2]==20)
Run Code Online (Sandbox Code Playgroud)
但是可以使用循环来减小命令的大小吗?
用途split
:
x <- split(data, data$age)
x
$`17`
sex age name
3 M 17 Bill
6 F 17 Dana
$`18`
sex age name
2 M 18 Joseph
5 M 18 Robert
$`20`
sex age name
1 M 20 John
4 F 20 Sarah
Run Code Online (Sandbox Code Playgroud)
你现在有数据帧的列表,您可以访问使用任何提取运营商,即列表中的元素$
,[
或[[
.
例如,第一个元素:
x[1]
$`17`
sex age name
3 M 17 Bill
6 F 17 Dana
Run Code Online (Sandbox Code Playgroud)
或者带有名字的元素17
.但请注意,您必须使用反引号来引用这些名称,因为以数字开头的名称不是标准的:
x$`17`
sex age name
3 M 17 Bill
6 F 17 Dana
Run Code Online (Sandbox Code Playgroud)