根据选定的变量/列名称过滤R数据框并子设置R数据框 [英] Filtering and subsetting R dataframe based on selected variable/column names

查看:9
本文介绍了根据选定的变量/列名称过滤R数据框并子设置R数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试子集一个包含许多变量/列名的大型数据集,比如ax1、ax2、ax3、ax4、ax5、...、ax20、bx1...bx20、zx1...zx20。例如,假设我要获取的子集数据位于变量ax3、ax5、ax11、ax19、...、bx3、bx5、cx11、cx19、...、zx3、zx5、zx11、zx19上。

我在R中尝试了以下代码,但它变得非常冗长和笨拙。

setwd("")
abc<- read.table("abc.txt", header=TRUE)
new.abc<-data.frame(abc$ax3,abc$ax5,abc$ax5,abc$ax11,abc$ax19,  
abc$bx3,abc$bx5,abc$bx5,abc$bx11,abc$bx19)

代码越来越长,因为我需要继续使用cx3、cx5、cx11、cx19、...、zx3、xz5、zx11、zx19。我正在寻找一种替代方法,可以避免这种冗长的编码。非常感谢您的帮助。

推荐答案

您可以通过编程方式创建列。如果他们遵循问题中提到的相同结构,我们可以

cols <- c(outer(paste0(letters, "x"), c(3, 5, 11, 19), paste0))
cols
#[1] "ax3"  "bx3"  "cx3"  "dx3"  "ex3"  "fx3"  "gx3"  "hx3"  "ix3"  "jx3"  "kx3"...

然后使用它来设置数据帧的子集

new.abc[, cols]

如果我们还想保持列顺序,可以使用gtools::mixedsort

new.abc[, gtools::mixedsort(cols)]

这篇关于根据选定的变量/列名称过滤R数据框并子设置R数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆