【问题标题】:R: How to filter through a string of characters in the header of a tableR:如何过滤表头中的字符串
【发布时间】:2013-07-24 18:12:17
【问题描述】:

我有一张桌子,从这里开始:

TargetID         SM_H1462   SM_H1463    SM_K1566    SM_X1567    SM_V1568   SM_K1534     SM_K1570    SM_K1571    
ENSG00000000419.8   290 270 314 364 240 386 430 329     
ENSG00000000457.8   252 230 242 220 106 234 343 321 
ENSG00000000460.11  154 158 162 136 64  152 206  432
ENSG00000000938.7   20106   18664   19764   15640   19024   18508   45590   32113

我想编写一个代码来过滤每列的名称(SM_...),并且只查看每个名称中的第四个字符。第 4 个字符可以出现 4 种不同的选项:它们可以是字母 H、K、X 或 V。这可以从上表中看出,例如SM_H1462、SM_K1571 等。以字母 H 和 K 作为第 4 个字符的名称为 Control,以字母 X 或 V 作为第 4 个字符的名称为 Case。

我希望代码根据第 4 个字母分隔列名,并将它们分为两组:大小写和控制。

基本上,我们现在可以忽略数据,我只想先处理列名。

【问题讨论】:

  • ?substr 开始。

标签: string r filter character bioinformatics


【解决方案1】:

如果对您有帮助,您可以尝试检查第四个字符和 ger 大小写并将 aa 控制为两个单独的数据框

my.df <- data.frame(matrix(rep(seq(1,8),3), ncol = 8))
colnames(my.df) <- c('SM_H1462','SM_H1463','SM_K1566','SM_X1567', 'SM_V1568', 'SM_K1534', 'SM_K1570','SM_K1571')
my.df
control = my.df[,(substr(colnames(my.df),4,4) == 'H' | substr(colnames(my.df),4,4) == 'K')]
case = my.df[,(substr(colnames(my.df),4,4) == 'X' | substr(colnames(my.df),4,4) == 'V')]

【讨论】:

  • 还有一件事,这段代码是返回一个列表还是一个因子?我定义了control = my.df[,(substr(colnames(my.df),4,4) == 'H' | substr(colnames(my.df),4,4) == 'K')]case = my.df[,(substr(colnames(my.df),4,4) == 'X' | substr(colnames(my.df),4,4) == 'V')]。当我通过condition=(case, control)将两者结合起来时,我需要condition的结构作为一个因素。
  • class(x) 告诉您它返回的内容 - 在这种情况下,它是 data.frame。我认为您需要另一个变量来获取此信息。 control$type &lt;- rep('control',nrow(control)case$type &lt;- rep('case',nrow(case)。我认为一个简单的rbind 应该从那里开始工作。 编辑: 抱歉,您想要一个因素。一旦你加入两个数据框,将列转换为因子?factor
猜你喜欢
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多