如何在R数据框中选取因子列?
因子列的子集可以通过使用`sapply`函数和`is.factor`函数创建一个包含所有列的对象来提取所有因子列,然后将该对象传递到子集运算符单方括号中来完成。例如,如果我们有一个包含三列x、y、z的数据框df,其中两列x和y是因子列,那么我们可以使用`Factors<-sapply(df,is.factor)`,然后使用`df[,Factors]`,这将只选取数据框df中的因子列。
示例
考虑下面的数据框:
x1<-as.factor(sample(LETTERS[1:3],20,replace=TRUE)) x2<-as.factor(sample(c("GRP1","GRP2","GRP3","GRP4","GRP5"),20,replace=TRUE)) x3<-sample(1:10,20,replace=TRUE) df1<-data.frame(x1,x2,x3) df1
输出
x1 x2 x3 1 A GRP1 2 2 B GRP1 7 3 B GRP3 1 4 A GRP4 8 5 B GRP2 8 6 A GRP3 6 7 C GRP1 8 8 B GRP3 9 9 B GRP5 1 10 C GRP3 8 11 A GRP3 1 12 C GRP1 1 13 B GRP1 10 14 C GRP1 7 15 C GRP3 10 16 C GRP2 4 17 C GRP2 1 18 B GRP1 2 19 C GRP3 10 20 A GRP2 3
使用sapply创建列的对象,使用单方括号提取因子列:
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
示例
Factors<-sapply(df1,is.factor) Factors
输出
x1 x2 x3 TRUE TRUE FALSE
提取因子列:
示例
Factors_df1<-df1[,Factors] Factors_df1
输出
x1 x2 1 A GRP1 2 B GRP1 3 B GRP3 4 A GRP4 5 B GRP2 6 A GRP3 7 C GRP1 8 B GRP3 9 B GRP5 10 C GRP3 11 A GRP3 12 C GRP1 13 B GRP1 14 C GRP1 15 C GRP3 16 C GRP2 17 C GRP2 18 B GRP1 19 C GRP3 20 A GRP2
让我们来看另一个例子:
示例
Salary_Grp<-as.factor(sample(c("20-30","31-40","41-50"),20,replace=TRUE)) Gender<-as.factor(sample(c("Male","Female"),20,replace=TRUE)) Rating<-sample(0:10,20,replace=TRUE) df2<-data.frame(Salary_Grp,Gender,Rating) df2
输出
Salary_Grp Gender Rating 1 20-30 Male 7 2 20-30 Female 8 3 31-40 Male 5 4 41-50 Male 7 5 41-50 Male 6 6 20-30 Male 7 7 20-30 Female 0 8 20-30 Male 5 9 31-40 Female 2 10 20-30 Male 7 11 31-40 Male 8 12 31-40 Female 4 13 20-30 Male 9 14 20-30 Female 5 15 31-40 Male 0 16 20-30 Female 9 17 41-50 Female 10 18 31-40 Female 1 19 31-40 Male 5 20 20-30 Female 3
示例
Factors_df2<-sapply(df2,is.factor) Factors_df2
输出
Salary_Grp Gender Rating TRUE TRUE FALSE
示例
Factors_df2<-df2[,Factors_df2] Factors_df2
输出
Salary_Grp Gender 1 20-30 Male 2 20-30 Female 3 31-40 Male 4 41-50 Male 5 41-50 Male 6 20-30 Male 7 20-30 Female 8 20-30 Male 9 31-40 Female 10 20-30 Male 11 31-40 Male 12 31-40 Female 13 20-30 Male 14 20-30 Female 15 31-40 Male 16 20-30 Female 17 41-50 Female 18 31-40 Female 19 31-40 Male 20 20-30 Female
广告