R 按多个因子级别对数据帧进行子集划分
如何避免使用循环基于多因素级别对数据帧进行子集划分 在下面的示例中,我想要的输出是一个数据帧。数据帧应包含原始数据帧的行,“代码”中的值等于“选定”中的一个值 工作示例:R 按多个因子级别对数据帧进行子集划分,r,subset,R,Subset,如何避免使用循环基于多因素级别对数据帧进行子集划分 在下面的示例中,我想要的输出是一个数据帧。数据帧应包含原始数据帧的行,“代码”中的值等于“选定”中的一个值 工作示例: #sample data Code<-c("A","B","C","D","C","D","A","A") Value<-c(1, 2, 3, 4, 1, 2, 3, 4) data<-data.frame(cbind(Code, Value)) selected<-c("A","B") #want
#sample data
Code<-c("A","B","C","D","C","D","A","A")
Value<-c(1, 2, 3, 4, 1, 2, 3, 4)
data<-data.frame(cbind(Code, Value))
selected<-c("A","B") #want rows that contain A and B
#Begin subsetting
result<-data[which(data$Code==selected[1]),]
s1<-2
while(s1<length(selected)+1)
{
result<-rbind(result,data[which(data$Code==selected[s1]),])
s1<-s1+1
}
#示例数据
代码试试这个:
> data[match(as.character(data$Code), selected, nomatch = FALSE), ]
Code Value
1 A 1
2 B 2
1.1 A 1
1.2 A 1
您可以在%
data[data$Code %in% selected,]
Code Value
1 A 1
2 B 2
7 A 3
8 A 4
还有一个:
data[data$Code == "A" | data$Code == "B", ]
还值得一提的是,如果子集因子在长度和顺序上与数据帧行匹配,则它不必是数据帧的一部分。在本例中,我们无论如何都是用这个因子制作数据帧的。所以
data[Code == "A" | Code == "B", ]
同样有效,这是关于R的真正有用的东西之一。第二部分在Jupyter笔记本中对我不起作用。