子集数据框架以获取行名,列名和值

哈伦

我有一个数据框

Phe  Ile  
Leu  0.10 0.27 
Ile  0.67 0.00 
Val  0.66 0.87 
B.Hy 0.09 0.41

我想将数据的子集的值大于0.5,所以预期结果是

Phe Ile 0.67
Phe Val 0.66
Ile Val 0.87

我写了一个函数

extract <- function(x){if(x[i,j] > 0.5){print x[1,j]"\t"x[j,1]"\t"x[i,j] }}

但是它给了错误

“提取<-函数(x){if(x [i,j]> 0.5){print x”

我在哪里做错了?

阿克伦

melt在将“ data.frame”转换为“ matrix”之后,我们可以将数据集从“宽”格式重塑为“长”格式。这将产生一个“行名”,“列名和值”列,我们可以从中subset获得具有逻辑条件的行value > 0.5

 library(reshape2)
 subset(melt(as.matrix(df1)), value>0.5)[,c(2:1,3)]
 #  Var2 Var1 value
 #2  Phe  Ile  0.67
 #3  Phe  Val  0.66
 #7  Ile  Val  0.87

注意:在预期的输出中,列名列是第一位,其后是行名,然后是值列。通常是按顺序rowname/colname/value


一种base R选择是创建逻辑矩阵(df1> 0.5)。这可用于子集行名。我们可以将row'indx '与'df1'的'col'相乘,以获得'indx'中的'TRUE'值相对应的数字行/列位置,而'FALSE'将被替换为'0'。基于数字索引,我们过滤行名和列名。

 indx <- df1>0.5
 rn <- rownames(df1)[row(df1)*indx]
 cn <-  colnames(df1)[col(df1)*indx]
 val <- df1[indx]
 data.frame(rn, cn, val)
 #   rn  cn  val
 #1 Ile Phe 0.67
 #2 Val Phe 0.66
 #3 Val Ile 0.87

数据

 df1 <- structure(list(Phe = c(0.1, 0.67, 0.66, 0.09), 
 Ile = c(0.27, 
 0, 0.87, 0.41)), .Names = c("Phe", "Ile"), class = "data.frame", 
 row.names = c("Leu", "Ile", "Val", "B.Hy"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

子集数据框,以便包含每一行的最大值和列名

来自分类Dev

基于列名的部分匹配的子集数据

来自分类Dev

基于列名的部分匹配的子集数据

来自分类Dev

替换子集数据帧的前 100 行的值

来自分类Dev

子集数据框:从原始df中获取先前值,但不在子集中

来自分类Dev

按日期获取子集数据帧

来自分类Dev

基于最小值的子集数据

来自分类Dev

子集数据表/计数行

来自分类Dev

用R中的行名和列名子集矩阵

来自分类Dev

列名称的复杂模式的子集数据帧

来自分类Dev

基于列名称的字符向量的子集数据帧

来自分类Dev

R,dplyr的子集数据帧过滤列A的行值而不是列B的行NA

来自分类Dev

通过规则列表动态子集数据框架

来自分类Dev

子集数据

来自分类Dev

收集数据框中每一行的值为True的列名

来自分类Dev

子集数据集后的奇怪变量名

来自分类Dev

仅获取R中数据集的结构(行名和列名)

来自分类Dev

单击数据表中的单元格时获取列名和行名

来自分类Dev

根据组的最大值子集数据帧

来自分类Dev

具有逻辑值矩阵的子集数据帧

来自分类Dev

子集数据集以保留最大的2个值

来自分类Dev

使用R在XTS中修改子集数据范围的值

来自分类Dev

基于列中最频繁值的子集数据集

来自分类Dev

用于均匀拆分列值的子集数据框

来自分类Dev

用逻辑矩阵和向量子集数据帧

来自分类Dev

列表中的R重塑和子集数据帧

来自分类Dev

子集数据帧,但跳过一些行

来自分类Dev

子集数据帧包含系统日期的行

来自分类Dev

R根据行中的非零子集数据