首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据列中的特定值转换输入数据?

如何根据列中的特定值转换输入数据?
EN

Stack Overflow用户
提问于 2017-09-07 12:53:20
回答 2查看 45关注 0票数 1

我希望根据列中的值2和-2来转换输入数据。结果应该如下所示。

代码语言:javascript
复制
Input:

Symbol   S1   S2   S3   S4   S5
ATAC     0     1    -1   -2   2
BHGV     1     1    -2    2   0
CCNL     2    -2     1    0   1
AGRN     0     2    -2    0   1

Result:

S1  2 CCNL
S2 -2 CCNL
S2  2 AGRN
S3 -2 BHGV
S3 -2 AGRN
S4 -2 ATAC
S4  2 BHGV
S5  2 ATAC

谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-07 13:01:09

阿伦跑得更快。如果他不发帖子,这里有一个完整的答案:

代码语言:javascript
复制
library(data.table)
data <- fread("
      Symbol   S1   S2   S3   S4   S5
      ATAC     0     1    -1   -2   2
      BHGV     1     1    -2    2   0
      CCNL     2    -2     1    0   1
      AGRN     0     2    -2    0   1
      ")

melted <- melt(data, id.var = "Symbol")
melted <- melted[abs(melted$value) == 2, ]

关于编辑:

代码语言:javascript
复制
melted[melted == 2] <- "TWO"
melted[melted == -2] <- "MTWO"
票数 1
EN

Stack Overflow用户

发布于 2017-09-07 13:05:13

在带有stackcbind的基本R中,您可以

代码语言:javascript
复制
# get 3 column data.frame
dat2 <- cbind(Symbol=dat$Symbol, stack(dat[-1]))
# drop unacceptable values
dat2[abs(dat2$values) > 1,]
   Symbol values ind
3    CCNL      2  S1
7    CCNL     -2  S2
8    AGRN      2  S2
10   BHGV     -2  S3
12   AGRN     -2  S3
13   ATAC     -2  S4
14   BHGV      2  S4
17   ATAC      2  S5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46096895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档