我希望根据列中的值2和-2来转换输入数据。结果应该如下所示。
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谢谢!!
发布于 2017-09-07 13:01:09
阿伦跑得更快。如果他不发帖子,这里有一个完整的答案:
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, ]关于编辑:
melted[melted == 2] <- "TWO"
melted[melted == -2] <- "MTWO"发布于 2017-09-07 13:05:13
在带有stack和cbind的基本R中,您可以
# 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 S5https://stackoverflow.com/questions/46096895
复制相似问题